2009-08-28 4 views
33

내 코드가 실행중인 머신이 빅 엔디안 또는 리틀 엔디안인지 여부를 확인하는 가장 좋은 방법을 찾으려고합니다. (나는 빅 엔디안 시스템에서 그것을 테스트하지 않은 있지만) 내가 작품 해결책을 가지고 있지만 어설픈 조금 같다 : 이것은 조금에 '기본'2 바이트 팩을 비교한다endianness를 결정하는 가장 Pythonic 한 방법은 무엇입니까?

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

을 -endian pack. 더 예쁜 방법이 있습니까?

+0

왜 알아야합니까? 당신의 솔루션은 충분히 좋은 것처럼 보이지만 'struct'자체를 사용할 때 반드시 알 필요는 없습니까? – u0b34a0f6ae

+0

사실,하지만 구조체 모듈을 사용하고 있지 않습니다. (어쩌면해야하지만, 제가 고친 코드의 원래 작성자가 아닙니다.) –

답변

73

대답은 sys module에 : 물론

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

그것이 'big'를 반환 할 수 있습니다 컴퓨터에 따라 달라집니다. 당신의 방법은 확실히 작동해야합니다.

+4

예. powerpc에 '>>> sys.byteorder가 있습니다. 'big'' – u0b34a0f6ae

관련 문제