Maison >développement back-end >C++ >Comment puis-je détecter par programme l'endianité en C ?

Comment puis-je détecter par programme l'endianité en C ?

Susan Sarandon
Susan Sarandonoriginal
2024-12-29 10:41:10489parcourir

How Can I Programmatically Detect Endianness in 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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn