我一直在努力理解解包如何工作。更具体地说,文档中的这个特定示例最令我困惑,因为当我输入它完全相同时,它不会给我相同的输出。 https://docs.python.org/2/library/struct.html#struct-examplesPython中的结构和解包
>>> from struct import *
>>> pack('hhl', 1, 2, 3)
'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpack('hhl', '\x00\x01\x00\x02\x00\x00\x00\x03')
(1, 2, 3)
>>> calcsize('hhl')
8
8字节大小有意义但是当我做calcsize(“HHL”)它返回16.贮藏包(“HHL”,1,2,3)作为变量和拆包它工作正常,但使用十六进制值没有。我收到错误“解压缩需要一个长度为16的字符串参数”,任何想法是什么问题?由于
该文档指出,该示例是在一个big-endian机器上完成的。请注意,大多数(?)流行处理器使用little-endian字节排序,所以输出字符串可能会不同。只要你打开包装生成的字符串,你就会好起来的。你也可以强制一个特定的字节顺序(见文档)。 – jedwards
是的这是原来的问题。格式化为big-endian给出了我期待的结果 –