2017-03-27 93 views
0

我有一個由delphi編寫的二進制文件。這是我所知道的:從二進制文件中讀取字符串

  • 塊1:4字節,代表32位的整數值。
  • 塊2:字符串值(所有二進制文件的長度不固定)
  • 塊3:4個字節,代表32位的整數值。
  • 座4:String值(該長度不是固定的所有二進制文件)
  • ...
  • BlockN

我在此讀取的第一個塊值:

import struct 

f = open("filename", 'rb') 
value = struct.unpack('i', f.read(4)) 

字符串值如何?一個好的解決方案會是什麼樣子?有什麼辦法來迭代字符串,並找到像C中的每個字符串值的最終分隔符「\ 0」?

回答

0

我發現Delphi使用7位整數壓縮來指定一個字符串的開頭,需要多少個字節才能讀取。我發現here是用python實現的相同算法。所以,我只需要將文件傳入decode7bit(bytes):函數,它會告訴我有多少字節需要向前讀取。

相關問題