使用struct.pack struct.unpack的endianness

时间:2012-05-18 13:20:02

标签: python endianness

我正在尝试阅读一些二进制数据文件。数据文件中写有“sentinal”整数,始终为-1。我认为我可以用它来检查写入数据的机器是big-endian还是little-endian,但经过一些实验,似乎并非如此。具体做法是:

import struct
data=struct.pack('<i',-1)
print (struct.unpack('<i',data))  #(-1,)
print (struct.unpack('>i',data))  #(-1,) ???

2 个答案:

答案 0 :(得分:3)

-1的表示在大和liddle端(和2的补码)是相同的,即(假设32位)

ffffffff # big endian
ffffffff # little endian

选中0x01020304之类的值,或者,如果您想添加其他支票,0x0d0aff000d0a是Windows EOL CRLFff将突破8位不透明的通道,00将打破以空值终止的字符串。)

答案 1 :(得分:3)

值-1表示为二进制的0XFFFFFFFF(两个恭维)。无论字节顺序如何,它看起来都是一样的。