Ciao a tutti.
Ho il seguente problema: ho un numero intero memorizzato su 4 byte in esadecimale.
Devo ricostruire l'intero.
Faccio un esempio:
ho il seguente vettore (unsigned char)
codice:
v[0] = 0x00
v[1] = 0x01
v[2] = 0x8E
v[3] = 0x20
e devo ricostruire il numero che e': 101920 (00018E20)
Nel mio codice faccio la seguente cosa.
Il vettore con i byte esadecimali e' un unsigned char[4] v.
E il metodo che uso per ricostruire il numero intero e':
codice:
#define BUILD_UINT16_4(b1, b2, b3, b4) \
( (UINT16)((b1 & 0x00FF) + (UINT16)((b2 & 0x00FF) << 8) + (UINT16)((b3 & 0x00FF) << 16) + (UINT16)((b4 & 0x00FF) << 24)) )
E lo richiamo in questo metodo
codice:
unsigned long getValuta(unsigned char buf[4]) {
unsigned long res;
res = BUILD_UINT16_4(buf[3], buf[2], buf [1], buf[0]);
return res;
}
Ovviamente in buf passo v.
Il problema e' che l'intero che ottengo e' 00008E20 e non 00018E20.
Dove sbaglio?
Ciao e grazie
Sandro