我认为小端和大端数字的大小相同(以字节为单位)。但是 python 2.7 的结构模块是这样说的:
In [46]: struct.unpack('>L', datalen[4:8])[0]
Out[46]: 35098131
In [47]: struct.unpack('L', datalen[4:8])[0]
---------------------------------------------------------------------------
error Traceback (most recent call last)
<ipython-input-47-f18e2a303d6c> in <module>()
----> 1 struct.unpack('L', datalen[4:8])[0]
error: unpack requires a string argument of length 8
为什么 big endian 长 4 个字节,而 struct 期望 little-endian 长为 8 个字节?
最佳答案
指定 'L'
没有>
或 <
不是“小端”;它是原生字节序 和 原生大小。标准大小为 4 个字节,但您机器的 native 大小为 8 个字节。
如果您明确想要标准大小的小端,请使用:
struct.unpack('<L', datalen[4:8])[0]
关于python - 为什么 python 的结构认为 little-endian 和 big-endian 意味着不同的长度?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25570867/