Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 10 kwi 2026, o 09:01


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 
Autor Wiadomość
PostNapisane: 12 cze 2014, o 17:09 
Offline
Użytkownik

Dołączył(a): 18 paź 2012
Posty: 244
Pomógł: 2

Witam i o zdrowie pytam :)

Mam problem :P

Otóż mam ja tablicę charów:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać elementy tablicy to są heksadecymalne liczby (bez 0x). O ile umiem zamienić na liczbę DEC pojedynczy element tablicy:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


To nie umiem już zamienić całego ciągu na DEC (ciągu z tablicy czyli w tym przypadku 14 1e ab 05 co powinno dać (337554181DEC).

A więc Panowie...pomocyyyy bo siedzę nad problemem od wczoraj :roll:



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 17:39 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

Ale po co zapisujesz wartości w postaci znaków (char)? Nie możesz po prostu 0x141EAB05 ?

Jeśli chcesz wyświetlić liczbę hex to użyj stdlib.h i funkcji itoa().

_________________
Mam 16 lat, nie jestem zawodowcem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 18:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

kiclaw napisał(a):
unsigned char tablica_char[4];


pierwszy błąd ..... nie używaj tego unsigned w AVR GCC

------------------------ [ Dodano po: 1 minucie ]

kiclaw napisał(a):
tablica_char[0]='14';


drugi błąd - ale pytanie dodatkowe dla ciebie: "czym różni się cudzysłów w C od apostrofu ???" .... podpowiedź: masz to w bluebooku opisane (w każdym bądź razie to ci nie zadziała)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 18:58 
Offline
Użytkownik

Dołączył(a): 12 kwi 2014
Posty: 208
Lokalizacja: Białystok
Pomógł: 0

mirekk36 napisał(a):
kiclaw napisał(a):
unsigned char tablica_char[4];


pierwszy błąd ..... nie używaj tego unsigned w AVR GCC

------------------------ [ Dodano po: 1 minucie ]

kiclaw napisał(a):
tablica_char[0]='14';


drugi błąd - ale pytanie dodatkowe dla ciebie: "czym różni się cudzysłów w C od apostrofu ???" .... podpowiedź: masz to w bluebooku opisane (w każdym bądź razie to ci nie zadziała)


Dobre pytanie :D
No właśnie - dlaczego ma to działać, skoro wymuszasz na tablicy (jakby nie patrzeć) typu char, żeby wpisał się string - dwie literki traktujemy jako ciąg znaków, zatem będzie zakończony znakiem "null", czyli zero - koniec łańcucha znaków. A jak w jedną komórkę (szufladkę) tablicy chcesz wpisać dwie literki? Jak się już uprzesz, to możesz wpisywać po jednej literce do każdej szufladki tablicy, aczkolwiek ja nie widzę tu żadnego sensu. Po co ci liczba hex zapisana pojedynczymi literkami? Jak już mówiłem, jeśli chcesz wyświetlić tą liczbę w postaci hex np. na LCD, to użyj funkcji itoa(), której działanie bardzo dobrze opisane w poradniku pana Mirka na temat kodów ASCII, więc zapraszam :)

Pozdrawiam

_________________
Mam 16 lat, nie jestem zawodowcem ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 19:14 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

A mi się zdaje, że zapis typu '14' to nie string tylko tzw. multi-character constant.
Wartość tej stałej to
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

albo
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

zależnie od implementacji.

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 21:00 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

xor napisał(a):
A mi się zdaje, że zapis typu '14' to nie string


Dokładnie - tu nawet nie ma co się wydawać ;) przecież ....

w AVR GCC - '14' to:

"large iteger implicitly truncated to unsigned type"

przy domyślnych ustawieniach kompilatora ... co oznacza ni mniej ni więcej że chcemy wpeklować do 8-bitowego elementu, stałą o wartości 16-bitowej, która zostanie ucięta przy samym ogonie ;) czyli zostanie z niej tylko 8-bitów. Koniec końców nie uzyskamy zamierzonego efektu.

Mogłoby to spowodować podejrzenie, że skoro zrobimy tablicę z elementami 16-bitowymi np:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


to uda się zrobić:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


ale tyż nie da rady bo wtedy dostaniemy WARNA ;) ... że próbujemy użyć stałej wieloznakowej ...

Reasumując

cudzysłów - do przechowywania stringów
apostrof - do przechowywania pojedynczych znaków (jednobajtowych)

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 21:19 
Offline
Użytkownik

Dołączył(a): 20 wrz 2013
Posty: 647
Zbananowany użytkownik

Pomógł: 101

Się rozumie. Co innego miałem na myśli, co innego napisałem. Chciałem napisać: "zapis typu '14' to nie znak (stała znakowa)...". To a propos tego fragmentu pierwszego postu:

Cytuj:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Jak widać elementy tablicy to są heksadecymalne liczby (bez 0x).

_________________
+++++[>++++<-]>[>++++++<-]>.---------.+++.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 12 cze 2014, o 21:24 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27450
Lokalizacja: Szczecin
Pomógł: 1045

xor napisał(a):
Się rozumie. Co innego miałem na myśli, co innego napisałem


Ale dzięki temu - jak ktoś tu trafi to "troszkę" sobie doczyta ...

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 8 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO