92 votes

Comment vérifier si un système est un grand ou un petit endien ?

Comment vérifier si un système est un grand ou un petit endien ?

94voto

belwood Points 797

En C, C++

int n = 1;
// little endian if true
if(*(char *)&n == 1) {...}

Voir aussi : Version Perl

54voto

Nikita Pestrov Points 3778

En Python :

from sys import byteorder
print(byteorder)
# will print 'little' if little endian

15voto

Neeraj Points 766

Un autre code C utilisant l'union

union {
    int i;
    char c[sizeof(int)];
} x;
x.i = 1;
if(x.c[0] == 1)
    printf("little-endian\n");
else    printf("big-endian\n");

C'est la même logique que Belwood a utilisée.

12voto

weibeld Points 1530

Un one-liner avec Perl (qui devrait être installé par défaut sur presque tous les systèmes) :

perl -e 'use Config; print $Config{byteorder}'

Si la sortie commence par un 1 (octet le moins significatif), c'est un système un peu endien. Si la sortie commence avec un chiffre plus élevé (octet le plus significatif), c'est un grand système endien. Voir la documentation du module Config.

12voto

Evg Points 4011

En C++20, utilisez std::endian :

#include <bit>
#include <iostream>

int main() {
    if constexpr (std::endian::native == std::endian::little)
        std::cout << "little-endian";
    else if constexpr (std::endian::native == std::endian::big)
        std::cout << "big-endian";
    else
        std::cout << "mixed-endian";
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X