Skip to main content
 首页 » 编程设计

python之为什么 python 的结构认为 little-endian 和 big-endian 意味着不同的长度

2025年05月04日12www_RR

我认为小端和大端数字的大小相同(以字节为单位)。但是 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]