Bonjour,
Un petit probleme (surement simple, étant nioub) a vous soumettre :
Je dispose d'une structure de ce type :
typedef unsigned short int uint16;
typedef unsigned long int uint32;
typedef struct
{
uint32 d1;
uint16 d2;
uint32 d3;
} data;
Je reçois dans un tableau "tab" 10 octets. Donc de la meme taille que ma structure.
Lorsque je fais un memcpy(&data, &tab[0], 10); je m'attends a remplir ma structure avec les valeurs du tableau. Mais voila, ca ne marche pas du tout.En fait, lorsque je demande l'affichage des adresses mémoire de d1, d2 et d3, je m'appercois que je vais toujours de 4 octets en 4 octets.
Ex : 0x80000000, 0x80000004, 0x80000008.
Or, vu que d2 a une taille de 2 octets, je pensais obtenir plutot :
Ex : 0x80000000, 0x80000004, 0x80000006.
Evidemment, comme cela ne fonctionne pas, la valeur de data.d1 est correcte, mais après data.d2 et data.d3 sont fausses...
Le pire, c'est qu'en changeant d1 en type long, je passe bien a 8 octets:
Ex : 0x80000000, 0x80000008, 0x8000000b.
Au secours.