1

選択肢がまさにここで必要なものかどうかはわかりませんが、何をしようとしているのかを説明します。私は正常に動作する次の BinData 構造を持っています。

class Property < BinData::Record
    endian :little

    int32  :name_len
    string :name, :read_length => :name_len
    int32  :type_len
    string :type, :read_length => :type_len
    int64  :data_len
end

ただし、:data_len を取得したら、実際のデータを取得する必要があります。次に来るものをどのように処理するかは、:type 文字列の値によって異なります。

  1. type が "IntProperty" の場合、次の 4 バイト (int32) は int です。
  2. type が "FloatProperty" の場合、次の 4 バイト (float_32) は float です。
  3. type が "StringProperty" の場合、次の 4 バイト (int32) は int (文字列の len) であり、次の (len * 8) は文字列そのものです。
  4. type が "ArrayProperty" の場合、次の 4 バイト (int32) は int (配列の len) であり、次のバイト数は多くの Property オブジェクト (配列に格納するため) の配列の len です。

これらのパスをナビゲートして BinData::Record を適切に設定する方法を理解するのを手伝ってくれる人はいますか?

4

1 に答える 1