2013-03-22 75 views
4

我有一些结构,我想从二进制文件读取。我尝试使用Python的结构。 这里阅读的字符串: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 

由于文档说, “我” 的大小为4个字节,为什么我的变化导致错误?

+0

也许假前缀或后缀的作品? (x00) – 2013-03-22 14:35:28

回答

5

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

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

+0

谢谢!其作品! – dtoch 2013-03-22 14:46:12