PDA

View Full Version : [C] Operazione sui byte


legolas977
20-11-2007, 21:30
Volevo chiedervi un consiglio:
Ho 3 byte esadecimali e devo trasportarli in una variabile (penso long int),
come posso fare?
I 3 byte assumono valore massimo 16777214 quando sono tutti e 3 a FF.
Ricapitolando:
con FF FF FF: valore 16777214
con 00 FF FF: valore 65535
con 00 00 FF: valore 255.
Grazie e saluti.

cionci
20-11-2007, 21:42
Sono stringhe oppure sono interi ?

vizzz
20-11-2007, 22:05
unsigned char a, b, c;
int val = (a << 16) | (b << 8) | c;

legolas977
20-11-2007, 23:34
Inizialmente i valori sono su 3 byte.

legolas977
21-11-2007, 00:26
Vizzz, a che scopo scifti prima di 16 e poi di 8 a sinistra?
ciao e grazie

wingman87
21-11-2007, 00:42
Perchè 8 è la dimensione di un byte immagino.

vizzz
21-11-2007, 01:02
Vizzz, a che scopo scifti prima di 16 e poi di 8 a sinistra?
ciao e grazie

lo shift è un operatore che opera sui bit, quindi sposti effettivamente prima di 2 byte e poi di un byte a sinistra.

Mr Emme
23-11-2007, 21:39
Vizzz, a che scopo scifti prima di 16 e poi di 8 a sinistra?
ciao e grazie
perchè shiftando a sinistra di 16 sposta il byte a nella posizione del secondo byte della varibile int, successivamente spostando di 8 il byte b lo posizione nel terzo byte e il c non lo shifta in quanto tramite l'operazione logica or il byte c si troverà in ultima posizione.