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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 struct ma_structure_s { unsigned int buf; byte ligne[16]; }ma_structure_t;
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2#define NB_ELEMENTS 1
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 .
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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); } }
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 .
Partager