2009-08-28 29 views
33

Próbuję znaleźć najlepszy sposób sprawdzenia, czy komputer, na którym działa mój kod, to big-endian lub little-endian. Mam rozwiązanie, które działa (choć nie testowałem go na maszynie big-endian), ale wydaje się nieco clunky:Jaki jest najbardziej Pythonowy sposób określania endianiczności?

import struct 
little_endian = (struct.pack('@h', 1) == struct.pack('<h', 1)) 

to tylko porównanie z „native” pakiet dwubajtowa się trochę - pakiet portugalski. Czy jest ładniejsza droga?

+0

Dlaczego musisz wiedzieć? Twoje rozwiązanie wydaje się wystarczająco dobre, ale na pewno nie musisz wiedzieć, kiedy używasz samej "struct"? – u0b34a0f6ae

+0

To prawda, ale nie używam modułu struct (być może powinienem być, ale nie jestem oryginalnym autorem kodu, który naprawiam). –

Odpowiedz

73

Odpowiedź jest w sys module:

>>> import sys 
>>> sys.byteorder 
'little' 

Oczywiście w zależności od urządzenia może powrócić 'big'. Oczywiście twoja metoda też powinna działać.

+4

tak na powerpc jest napisane '>>> sys.byteorder 'big'' – u0b34a0f6ae

Powiązane problemy