2009-08-28 7 views
33

Tôi đang cố gắng tìm cách tốt nhất để tìm hiểu xem máy của tôi có đang chạy trên nền tảng lớn hay nhỏ. Tôi có một giải pháp mà làm việc (mặc dù tôi đã không kiểm tra nó trên một máy lớn về cuối nhỏ) nhưng nó có vẻ hơi vụng về:Cách Pythonic nhất định để xác định endianness là gì?

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

này chỉ là so sánh một gói hai byte 'mẹ đẻ' để một chút gói -endian. Có cách nào đẹp hơn không?

+0

Tại sao bạn cần biết? Giải pháp của bạn có vẻ đủ tốt, nhưng bạn chắc chắn không phải biết khi sử dụng 'struct'? – u0b34a0f6ae

+0

Đúng, nhưng tôi không sử dụng mô-đun struct (có lẽ tôi nên, nhưng tôi không phải là tác giả ban đầu của mã tôi đang sửa). –

Trả lời

73

Câu trả lời là trong sys module:

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

Tất nhiên tùy thuộc vào máy tính của bạn nó có thể trở 'big'. Phương pháp của bạn chắc chắn nên làm việc quá mặc dù.

+4

có trên powerpc nó nói '>>> sys.byteorder 'big'' – u0b34a0f6ae