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

标签 python struct byte endianness

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

相关文章:

python - 如何删除不同长度列表列表中的最内层嵌套

c++ - 结构的选择排序

c - 为 C 结构编写 init 函数

c++:将 24bpp 转换为 8bpp 或 1bpp 图像

java - long 1l,float 1f,double 1d,byte呢?

c# - 如何在 C# 中从 byte[] 创建一个 bmp 文件

python - 不明白这个嵌套函数是如何工作的

比较字符串和 strftime 值时,运算符中的 Python 无法按预期工作

python - pandas .diff 按行的多索引值

c - Golang (cgo) - 支持带有 cgo 的嵌套结构?