Tho*_*son 1 python byte struct endianness
我认为little-endian和big-endian数字大小相同(以字节为单位).但python 2.7的struct模块说明了这一点:
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
Run Code Online (Sandbox Code Playgroud)
为什么big endian长4个字节但struct期望little-endian长为8个字节?
指定'L'没有>或<不是"小端"; 它的原生字节序和原生大小.标准大小为4个字节,但机器的原始大小为8.
如果您明确需要标准大小的little-endian,请使用:
struct.unpack('<L', datalen[4:8])[0]
Run Code Online (Sandbox Code Playgroud)