Représentation de valeurs Hexadecimal en langage C
salut à tous et a toutes ,
J'ai un programme en C qui doit afficher 2 octets à partir d'un tableau de données , j'ai utiliser & 0xFF mais j'ai le que le prmeiere octet qui est afficher seulement .
& 0xFF c'est %255 en décimal ou 11111111 en langage binaire ,donc les premiers 8bits à 1 .
le code :
Code:
1 2 3 4 5 6 7 8 9
|
struct ma_structure_s
{
unsigned int buf;
byte ligne[16];
}ma_structure_t; |
Code:
1 2 3 4 5 6 7 8
|
byte Mes_Donnees[]={
0x11,0x22,0x00,0x00,
0x19,0x77,0x38,0x15,0x35,0x11,0x22,0x97,0x19,0x77,0x38,0x15,0x35,0x11,0x22,0x97,
}; |
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
|
int ma fonction ( void)
{
int i;
ma_structure_t *p;
p = (ma_structure_t *) Mes_Donnees;
for(i=0; i<NB_ELEMENTS i++)
{
if((p->buff & 0xFF)
p++;
printf (" Buff : %02X %02X",p->buff & 0xFF);
}
} |
Le but du code c'est d'afficher 11 22 à l'ecran , j'ai changer la valeur de buff de unsigned int à byte [0x02] mais j'ai pas les données souhaitées qui sont affichées .
Par contre pour afficher la ligne 16 Octets qui commence par 19 77 38 la j'ai aucun soucis à le faire .
Je n'ai jamais travailler avec ET " &" et "0xFF" pour la représentation de données en C .
La ligne est déclarée au tant que byte array et buff est déclarer au tant que unsigned int , je ne sais pas si c'est d'ici que se pose le probléme principale .
Merci pour vos différents conseils et suggéstions .