首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python和unpack

Python和unpack
EN

Stack Overflow用户
提问于 2020-10-14 22:22:16
回答 2查看 25.9K关注 0票数 6

我绝不是一个经验丰富的python程序员,这就是为什么我相信可能有一个显而易见的答案,但我只是不能把我的头围绕着struct.pack和解包。我有以下代码:

struct.pack("<"+"I"*elements, *self.buf[:elements])

我想扭转这个包装,但我不知道如何,我知道"<“指的是小endian和"I”是没有签名的int,就这样,我不知道如何使用struct.unpack来逆转包装。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-10-14 22:30:42

struct.pack采用非字节值(例如整数、字符串等)。并将它们转换为bytes。相反,struct.unpack采用bytes并将其转换为“高阶”等价物。

例如:

代码语言:javascript
复制
>>> from struct import pack, unpack
>>> packed = pack('hhl', 1, 2, 3)
>>> packed
b'\x00\x01\x00\x02\x00\x00\x00\x03'
>>> unpacked = unpack('hhl', packed)
>>> unpacked
(1, 2, 3)

因此,在您的实例中,您有很少的endian无符号整数(elements,其中许多)。您可以使用相同的结构字符串( '<' + 'I' * elements部件)来解压缩它们,例如struct.unpack('<' + 'I' * elements, value)

示例来自:https://docs.python.org/3/library/struct.html

票数 8
EN

Stack Overflow用户

发布于 2020-10-14 22:30:41

查看文档:https://docs.python.org/3/library/struct.html

代码语言:javascript
复制
obj = struct.pack("<"+"I"*elements, *self.buf[:elements])
struct.unpack("<"+"I"*elements, obj)

这个对你有用吗?

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/64362290

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档