如何在Python中解压结构?

如何在Python中解压结构?,python,file-io,converter,binaryfiles,unpack,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是我一次要读取的数据的大小,并将其打印出来,我得到: 我知道“q”表示数据被打包成长文件,我曾尝试使用struct.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是我一次要读取的数据的大小,并将其打印出来,我得到:

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

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

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

要将两个随机数打包成一个字符串
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“q”来打包,所以用2“q”来解包

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

谢谢你简单的回答。这是有道理的,也是有效的。