Représentation des données/Ordre des octets
Représentation des données |
Modifier le modèle |
Lorsque des données sont représentées sur plus d'un octet, l'ordre dans lequel les octets sont placés en mémoire peut être différent suivant les architectures, en fait il existe deux possibilités :
- l'octet de poids fort vient en premier (il est placé à la plus petite adresse) ;
- l'octet de poids faible vient en premier.
En anglais, on parle de big endian et de little endian.
Opérations dépendantes de l'ordre des octets
modifierUnions
modifierLes unions telles qu'utilisées en C ne sont pas portables.
Transtypages de pointeurs
modifierLes transtypages de pointeurs tels qu'utilisés en C ne sont pas portables.
Tester l'ordre des octets
modifier#include <stdio.h> union TestEndian { unsigned long total; struct { unsigned char octet1; unsigned char octet2; unsigned char octet3; unsigned char octet4; } octets; }; int main(int argc, char ** argv) { union TestEndian te; te.total = 0xFF; if (te.octets.octet1 == 0xFF) { printf("little endian\n"); } else { printf("big endian\n"); } }