了解 struct.unpack python

Posted

技术标签:

【中文标题】了解 struct.unpack python【英文标题】:Understanding struct.unpack python 【发布时间】:2015-02-22 19:25:25 【问题描述】:
test = struct.unpack('>%dH' % 1, '\x00\x44') 

让我很困惑。我认为这意味着取前 8 个字节并将它们视为双精度字节,然后将接下来的两个字节视为短字节,然后一次性完成所有这些操作。但它意味着别的东西,我不知道是什么。似乎意识到没有双重存在并将这两个字节转换为一个数字。

这段代码

test = struct.unpack('>1dH' , '\x00\x44')

抛出一个错误,因为它期望找到一个双...

谁能告诉我这两者有什么区别?

谢谢

【问题讨论】:

【参考方案1】:

'>%dH' % 1 等价于'>1H'

>>> '>%dH' % 1
'>1H'

'>%dH' % 1 正在使用old-style string formatting 将%d 替换为1

所以结构格式指定了一个大端的两字节无符号短。

【讨论】:

以上是关于了解 struct.unpack python的主要内容,如果未能解决你的问题,请参考以下文章

使用 struct.unpack_from() 解包混合二进制数据

如何使用 python struct.unpack

如何使用 struct.unpack 并将其转换为 Objective-c 中的值

在 struct.unpack 格式字符串中间切换字节顺序

使用 struct.unpack_from 解析时,特定图像返回奇怪的值

将大端字节数组转换为 int,如 python 中的 struct.unpack