• Witaj na Forum Arduino Polska! Zapraszamy do rejestracji!
  • Znajdziesz tutaj wiele informacji na temat hardware / software.
Witaj! Logowanie Rejestracja


Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Zamiana hex na int
#1
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?
 
Odpowiedź
#2
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.
Miło być decenianym https://buycoffee.to/kaczakat
 
Odpowiedź
#3
(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.
 
Odpowiedź
  


Skocz do:


Przeglądający: 1 gości