Arduino Polska Forum

Pełna wersja: Zamiana hex na int
Aktualnie przeglądasz uproszczoną wersję forum. Kliknij tutaj, by zobaczyć wersję z pełnym formatowaniem.
Witam chciałbym zamienić dwa chary na int z znakiem ale cokolwiek bym nie zrobił to wychodzi mi wartość dodatnia.

Na stronie Arduino jest napisane.
Cytat:On the Arduino Uno (and other ATmega based boards) an int stores a 16-bit (2-byte) value. This yields a range of -32,768 to 32,767

Co daje mi wyniki poza zakresem jakby arduino traktowało tą zmienną jako const int.

Program
Kod:
int zmienna =-1;
    Serial.println(zmienna);
    zmienna=0xFFFF;
    Serial.println(zmienna);
    char a1 =0xFF;
    char a2 =0xFF;
    zmienna= a1;
    zmienna<<=8;
    zmienna+=a2;
    Serial.println(zmienna);

Wynik 
Kod:
-1                                                                             
65535                                                                          
65535


Więc jak przekonwertować 2 chary na int z znakiem?
Nie zawsze inty mają taki zakres. Używasz ESP8266 lub innego 32 bitowego uC? Chcesz mieć pewność co do zmiennej użyj typu uint16_t lub int16_t.
(15-11-2021, 10:54)kaczakat napisał(a): [ -> ]Nie zawsze inty mają taki zakres. Używasz ESP8266 lub innego 32 bitowego uC? Chcesz mieć pewność co do zmiennej użyj typu uint16_t lub int16_t.
Dzięki bardzo wszystko działa ,nie wiem o czym ja myślałem pisząc tego "inta", poszedłem na łatwiznę sprawdzając wielkość inta na stronie arduino, nie myśląc o tym ze mam inny procesor.
 uC to teensy 4.
Jeszcze raz dziękuje.