Python 结构大小不匹配

标签 python struct

我想从二进制文件中读取一些结构。我尝试使用 python 的结构。 这是一个用于读取的字符串:

.... = struct.unpack('I36s36s72sQQIIH4s36s4s20s', datab.read(238))

它工作正常。我通过将值打印到屏幕来看到它。

现在我想把“4s”改成“I”。当我将字符串更改为:

.... = struct.unpack('I36s36s72sQQIIHI36s4s20s', datab.read(238))

(将第一个“4s”更改为“I”),出现错误:

struct.error: unpack requires a bytes object of length 240

正如文档所说“I”的大小是 4 个字节,为什么我的更改会导致错误?

最佳答案

这与对齐有关。 I 在四字节边界上对齐,需要在它之前填充两个字节。另一方面,4s 没有这样的要求。

参见 7.3.2.1. Byte Order, Size, and Alignment有关如何关闭此功能的信息。

关于Python 结构大小不匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15572925/

相关文章:

python - MQTT (Mosquitto) over TLS - 某些程序中的证书错误

c++ - 使结构的所有数学运算符都操作同一个成员

c - C 或 nesC 中结构体的语法

python - 确定 lambda 中的参数数量

c - 将 C 结构迁移到 Delphi 记录

c++ - 从通过函数感知的结构复制数组

json - 如何使用go语言从google map api获取经纬度?

python - BeautifulSoup 是否可以以不区分大小写的方式工作?

python - Keras 显示来自数据生成器的图像

python - 无法选中复选框出现超时异常