所以我正在查看我在4年前编写的代码,并且我知道它在当时运行正常。但现在我试图在不同的计算机上运行它,而不是几年前我写的那个,现在我收到了一个错误。 (今天在Windows 10和Ubuntu上尝试过)
我正在使用Python 2.7,就像我当时一样。我正在使用Struct库从文件中解压缩C类型,特别是我试图解压缩4个字节的长值。 这是2.7结构库的文档。 https://docs.python.org/2/library/struct.html
如果向下滚动到"格式化字符"部分,您可以看到C类型的表格。
这是我的代码:
bps = int(unpack('L', fmap[o+10:o+14])[0])
这是我得到的错误。
error: unpack requires a string argument of length 8
令我困惑的部分是"长度8"部分。如果我将C类型更改为"我"代码执行正常。但文档似乎很清楚," L"也是4字节,它在过去工作。我想我可以使用"我"键入我的目的,但我很好奇,如果有其他人看到这个。
答案 0 :(得分:3)
L
的标准大小为4个字节,但仅当您通过使用>
开始格式字符串明确表示要使用的字节序时,才会使用该字节,{ {1}},<
或!
。否则,将使用与计算机相关的平台原始大小。 (在这种情况下,8个字节。)