我有一些我想从二进制文件中读取的结构。我尝试用于python的struct。 这里有一个用于阅读的字符串:
.... = struct.unpack('I36s36s72sQQIIH4s36s4s20s', datab.read(238))
它工作正常。我通过将值打印到屏幕来看到它。
现在我想将“4s”改为“我”。当我将字符串更改为:
.... = struct.unpack('I36s36s72sQQIIHI36s4s20s', datab.read(238))
(先将“4s”更改为“I”),我收到错误:
struct.error: unpack requires a bytes object of length 240
由于文档说“I”大小是4个字节,为什么我的更改会导致错误?
答案 0 :(得分:5)
这与对齐有关。 I
在四字节边界上对齐,在它之前需要两个字节的填充。另一方面,4s
没有这样的要求。
有关如何关闭此功能的信息,请参阅7.3.2.1. Byte Order, Size, and Alignment。