如何解压 Python 中的结构?
How to unpack a struct in 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 是我一次要读取的数据的大小,并打印出来我得到:
我理解'q'表示数据被打包成一个long long,我试过用struct.unpack()
解包数据,但我似乎做不到获得关于如何解压它的正确语法。
那么我将如何解压缩这些信息?
将两个随机数打包成一个字符串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)
我需要解压一个 .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'表示数据被打包成一个long long,我试过用struct.unpack()
解包数据,但我似乎做不到获得关于如何解压它的正确语法。
那么我将如何解压缩这些信息?
将两个随机数打包成一个字符串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)