2017-03-27 14 views
0

私はバイナリファイルをdelphiで作成しています。これは私が知っているものです:バイナリファイルから文字列を読み取る

  • ブロック1:4バイトは、32ビットの整数値を表します。
  • ブロック2:文字列の値(長さはすべてのバイナリファイルで固定されていません)
  • ブロック3:4バイトは32ビットの整数値を表します。
  • ブロック4:文字列値(長さがすべてのバイナリファイルに対して固定されていない)
  • ...
  • BlockN

私は最初のブロックの値を読み取るためにこれを作った:

import struct 

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

文字列の値はどうですか?何が良い解決策でしょうか?文字列を繰り返し処理し、Cのように各文字列値の最後の区切り文字 "\ 0"を見つける方法はありますか?

答えて

0

私はDelphiがread.Iに必要なバイト数、文字列の先頭に指定するには、7ビットの整数圧縮を使用することを発見したがhere同じアルゴリズムは、Pythonで実装されました。だから、私はちょうどdecode7bit(bytes):関数にファイルを渡す必要があり、それは私がいくつかのバイトを前方に読まなければならないことを教えてくれます。

関連する問題