jeszcze raz - jak przesyłasz a terminala znak
1
to co wg ciebie leci do procesora ?
jakiś WYIMAGINOWANY znak ? kod ASCII ? czy może liczba ????
kolego wszystko naraz
znak ASCII 1 posiada kod 41, więc tak na prawdę z terminala leci JEDEN BAJT o wartości = 41 (dziesiętnie) a to że nazywamy go znakiem to sprawa umowna. Bo przecież procesor nie ma ludzkiego mózgu i nie wie co to znaczy ZNAK. On MUSI zobaczyć liczbę
i teraz przenosimy się do procka - skoro odebrał liczbę 41 to co to znaczy ?
1. odebrał liczbę ?
2. odebrał znak ?
3. odebrał kod ASCII ?
to zależy od programisty czyli od ciebie jak to zinterpretujesz w programie przecież. Bo procesor to niestety "tępak"
ale jeśli ty przygotujesz zmienną
char a;
i do niej przypiszesz ten bajt, a później wyślesz ją na LCD to umawiamy wyświetli się obraz ASCII znaku o kodzie 41 czyli co ???
1
gdybyś przesłał z terminala znak
A
to do procka doleci kod ASCII = 65 i tak samo
No dobra - ale teraz ciebie boli to .......... KURCZĘ a jak przesłać liczbę ??? NO TAK SAMO , robisz sobie zmienną np:
uint8_t a i jeśli do niej przypiszesz nadlatujący bajt o wartości 41 to umawiamy się, że skoro wczytałeś go do zmiennej typu uint8_t to w programie traktujemy ten bajt jako liczbę i ma ona wartość = 41('1') albo 65('A')
równie dobrze możesz zrobić typ
int a, co za różnica i tak samo odebrać ten bajt do zmiennej a i co ??? i masz w niej liczbę 41 albo 65
więc pytam po raz kolejny - czym się różni przesyłanie danych liczbowych czy znakowych ??????
NO NICZYM .....
owszem możesz powiedzieć - ale ja się UPARŁEM i chcę przesłać liczbę np 2 a nie jakieś tam 41
no tak z terminala nie wyślesz bajtu o wartości = 2 bo nie ma takiego znaku ASCII, ale co za problem wysłać znak ascii '2' ???
jak go wyślesz to przypiszesz go do zmiennej np
int a;
wtedy w a będziesz miał wartość 42, no dobra i jak zrobić z tego 2 ? proste
a = a - '0';
czyli
a = 42 - 40;
kod znaku ASCII '0' = 40, więc jeśli od kodu 42 ('2') odejmiesz kod 40('0') to otrzymasz upragnioną liczbę 2
pokazałem ci tu jakąś tam metodę prostej zamiany znaków ASCII w języku C na liczby dziesiętne ....
tyle że jest to opisane w książce - ale widzę że nie czytałeś tego - i ciekaw jestem dlaczego ?