簡體   English   中英

如何在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是我想一次讀取的數據大小,並打印出來,我得到:

打印出.bin數據

我知道'q'表示數據要打包很長一段時間,並且我嘗試使用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)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM