leggo un byte da un rtc (ds1307), e lo visualizzo con .print(byte, HEX); ... ma se voglio assegnare il valore ad una variabile come faccio?? come lo converto??
Mi pianto sempre in problemi semplicissimi....
Grazie!
Un numero è sempre un numero. 65 in decimale equivale in esadecimale a 0x41 in binario 01000001 nella tabella ascii equivale alla lettera 'A'.
A meno che non devi convertire il byte 65 in 2 caratteri '6' e '5' e allora diventa una stringa (2 caratteri + carattere fine stringa).
Ivan, ricorda che esadecimale, decimale, ottale, binario ... son solo delle forme diverse per esprimere la stessa cosa ... un VALORE.
A te a scuola hanno insegnato a fare i conti ed a rappresentare i valori con 10 simboli 0..9, ma ...
... gli stessi numeri li puoi rappresentare con 16 simboli 0..F, con 8 simboli 0..7 o con solo due simboli 0 e 1 ... essenzialmente cambia la lunghezza della rappresentazione (a parità di numero, normalmente, più è grande la base e meno caratteri occorrono per rappresentarlo).
Come ti ha detto Nid ... un numero è sempre un numero, indipendentemente come tu chiedi alla macchina di fartelo vedere
Guglielmo
Per assegnare un valore ad una variabile puoi usare la rappresentazione decimale, esadecimale, ottale o binaria indifferentemente.
int a = 0x20; // 0x20 vale 32 in decimale
int b = 32; // 32 vale 0x20 in esadecimale
int c = 040; // 040 vale 32 in decimale
Per la binario non mi ricordo la sintassi corretta, cercala nella rete.
Ciao.
Mi sembra con 0B davanti al numero tipo 0B01001
Comunque li si scriva il micro li memorizza sempre in binario.
nid69ita:
Mi sembra con 0B davanti al numero tipo 0B01001
Questa è una convenzione propria di Arduino, difatti c'è un file che si chiama Binary.h che contiene 256 define per questi valori.
Il prefisso standard del C è 0b, con la "b" minuscola.
Es. 0b10000000 corrisponde a 128 che corrisponde a $80
Credevo di aver capito, ma in realtà non ho capito un catzo!
Il RTC mi passa '88', con un serial.print vedo un '58'.... assegno il valore dal RTC ad una variabile, e questa è 88..... dove mi son perso??
E' giusto ...
... il valore esadecimale 0x58, tradotto in decimale da ... 5*16 + 8 = 88 decimale
Stai vedendo, rappresentato in due modi diversi, sempre lo stesso valore ....
0x58 esadecimale == 0B01011000 in binario == 88 in decimale XD
Guglielmo
P.S. : Devi studiarti le rappresentazioni nelle varie "basi" dei numeri ...