Maison >développement back-end >C++ >Comment puis-je détecter par programme l'endianité en C ?
Détection de l'endianisme en C
L'endianisme, qui fait référence à l'ordre dans lequel les octets sont stockés en mémoire, peut varier selon les différentes architectures. En C , les programmeurs peuvent avoir besoin de déterminer le caractère boutiste du système sur lequel ils s'exécutent pour garantir la compatibilité avec le matériel ou les structures de données sous-jacentes.
Pour détecter le caractère boutiste par programme, une méthode consiste à inspecter les représentations en octets de types de données spécifiques. L'extrait de code suivant montre comment cette approche fonctionne :
union Data { uint32_t i; char c[4]; }; bool is_big_endian() { Data data = {0x01020304}; return data.c[0] == 1; }
Dans ce code, une union est définie où le premier membre est un entier non signé de 32 bits (uint32_t) et le deuxième membre est un tableau de quatre caractères (c[4]). Lors de l'attribution de la valeur 0x01020304 au membre de l'union i, les représentations en octets de l'entier sont placées dans les éléments du tableau c dans l'ordre inverse (petit-boutiste) ou dans l'ordre normal (gros-boutiste), selon le caractère boutien du système.
En vérifiant la valeur de c[0], on peut déterminer l'endianité : si c[0] contient l'octet de poids faible (valeur inférieure), le système est petit-boutiste; si c[0] contient l'octet de poids fort (valeur la plus élevée), le système est big-endian.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!