如何在Python中解压缩结构?

时间:2015-04-26 22:31:51

标签: python file-io converter binaryfiles unpack

我需要解压缩.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是我想要一次读取的数据的大小,并打印出来我得到:

print out of .bin data

我知道'q'意味着数据被打包很长,我试图使用struct.unpack()来尝试解压缩数据,但我似乎无法得到正确的关于如何解压缩的语法。

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

2 个答案:

答案 0 :(得分: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)

答案 1 :(得分:1)

你用2“q”来打包它,所以用2“q”来打开包装。

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