Représentation des données/Ordre des octets
Apparence
| 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
[modifier | modifier le wikicode]Unions
[modifier | modifier le wikicode]Les unions telles qu'utilisées en C ne sont pas portables.
Transtypages de pointeurs
[modifier | modifier le wikicode]Les transtypages de pointeurs tels qu'utilisés en C ne sont pas portables.
Tester l'ordre des octets
[modifier | modifier le wikicode]#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");
}
}