3

さまざまなバイナリ形式をデコードするための python スクリプトをいくつか作成しています。各形式には多数の異なるレコードがあり、非常に多くのデータが特定のバイト内の特定のビット範囲にエンコードされています。したがって、コードが乱雑にならないように、デコード コードとフォーマット仕様をきちんと分離する python パッケージを探しています。理想的には、さまざまなバージョンの形式を保持できるようにすることです。以下は、私が探しているものの非常に大まかな概要です。

my_data_format.xml

<format version="1A">
  <record name="My first record">
    <ignore bytes="2" />
    <field name="A simple number" bytes="1" convert_to="int" />
    <field name="A simple float" bytes="4" convert_to="float" />
    <array name="A list of floats" length="3">
      <field bytes="4" convert_to="float"
    </array>
    <field bytes="2">
      <ignore bits="5" />
      <bitfield name="First bit-field" num_bits="6" convert_to="uint8" />
      <bitfield name="Second bit-field" num_bits="5" convert_to="float" />
    </field>
  </record>
</format>

Python スクリプトの例my_data_reader.py:

from binary_schema import load_schema

schema = load_schema('my_data_format.xml')

with open(̈́'myfile.bin', 'rb') as f:
  decoded_data = schema.read_record_from_stream('Record header', f)

print(decoded_data)

これは辞書を生成します:

{'A simple float': 3.234,
 'A simple number': 3,
 'A list of floats': [1., 2., 3.],
 'First bit-field': 3,
 'Second bit-field': 2.0}

そのようなことはありますか?

私はすでにいくつかのことを見てきました:

4

1 に答える 1

3

https://kaitai.io/「Kaitai Struct: バイナリ構造のパーサーを開発する新しい方法」をご覧ください。

スキーマは XML ではありませんが、フォーマットは XML よりもはるかに柔軟であると思います。

于 2018-08-01T18:52:44.943 に答える