如何在Python中解压结构?

2024-03-29 11:58:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要打开一个.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'意味着数据被打包在一个long long中,我尝试使用struct.unpack()来解包数据,但是我似乎无法获得正确的语法来解包它。你知道吗

那么我该如何打开这些信息呢?你知道吗


Tags: 文件数据代码信息readbin语法random
2条回答

你用了2个“q”来打包,所以用2个“q”来解包。你知道吗

>>> 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)

相关问题 更多 >