私はconstruct 2.8を使用して、いくつかのロスト・ロスト・パスカル・プログラムによって作成されたいくつかのファイルのヘッダーをリバース・エンジニアリングしています。可変長の可変長レコードを解析するPythonの構造
ヘッダーはいくつかの異なるレコードで構成されていますが、そのうちのいくつかはオプションで、順序が固定かどうかはわかりません。例えば
、レコードの2は次のようになります。
header_record_filetype = cs.Struct(
'record_type'/cs.Int8ub,
'file_type'/cs.PascalString(cs.Int16ub),
'unknown'/cs.Int8ub
)
header_record_user = cs.Struct(
'record_type'/cs.Int8ub,
'user'/cs.PascalString(cs.Int16ub)
)
そして、私は半ダース以上を特定しました。
タイプ0のレコードを見つけるまで(またはファイルの最後に達するまで)、パーサーが不明なレコード数のrecord_type
メンバーに基づいて正しいレコードタイプを選択する方法を教えてください。
ええ、私はこれらの行に沿って何かをやりました。私が持っていた問題の1つは、可変長文字列のために各レコードタイプの長さを決定することでした。しかし、Tellを使用する方法を考え出しました。まあ、教えてください:) – MerseyViking