如何在 Python 中解压结构?

Posted

技术标签:

【中文标题】如何在 Python 中解压结构?【英文标题】:How to unpack a struct in Python? 【发布时间】:2015-04-26 22:31:50 【问题描述】:

我需要解压一个 .bin 文件。用于使文件打包数据的代码如下:

x = ''
x = x + struct.pack('q', random.randint(0, MAX_NUM))
x = x + struct.pack('q', random.randint(0, MAX_NUM))

当我执行 f.read(16) 时,其中 16 是我想一次读取的数据的大小,然后将其打印出来:

我知道“q”表示数据被打包成很长很长,我尝试使用struct.unpack() 尝试解包数据,但我似乎无法获得正确的语法如何解压。

那么我该如何解压这些信息呢?

【问题讨论】:

【参考方案1】:

将两个随机数打包成一个字符串x

In [6]: x = struct.pack('2q', random.randint(0, MAX_NUM), random.randint(0, MAX_NUM))

从字符串中解压这些数字:

In [7]: struct.unpack('2q', x)
Out[7]: (806, 736)

保存和读取文件

即使我们将x保存在一个文件中,稍后再读回来,解包过程也是一样的:

In [8]: open('tmpfile', 'w').write(x)

In [9]: y = open('tmpfile', 'r').read()

In [10]: struct.unpack('2q', y)
Out[10]: (806, 736)

【讨论】:

【参考方案2】:

你用2个“q”打包,所以用2个“q”解包。

>>> struct.unpack('2q', 'abcdefghijklmnop')
(7523094288207667809, 8101815670912281193)

【讨论】:

感谢您的简单回答。这很有意义并且有效。

以上是关于如何在 Python 中解压结构?的主要内容,如果未能解决你的问题,请参考以下文章

如何在python中解压stxetx数据

如何在python中解压12个字节? php代码可用!试图将其转换为 python

python 结构解压

解压后如何压缩整个目录并保持其结构?

使用Python SDK时如何防止GCS自动解压对象?

时如何去除目录结构及其解压到指定目录 (