以下の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/04/05/234947より取得しました。


「BinData」で可変長なフィールドを定義する際はread_lengthが使える

「BinData」で可変長なフィールドを定義する際はread_lengthやlambda式が使えます。

lambda

class Hoge < BinData::Record
  endian :big
  uint8 :len, :value => lambda { data.length }
  string :data, :read_length => :len
end

と定義した場合、「data」フィールドさえ定義してあげれば、長さを読み取って突っ込んでくれます。

h = Hoge.new
h.data = "42"
p h
# {:len=>2, :data=>"42"}

読み込み時はread_length

逆に、受け取る値で長さの指定がある場合はread_lengthが使えます

class Fuga < BinData::Record
  uint8  :len
  string :data, :read_length => :len
end



以上の内容はhttps://shuzo-kino.hateblo.jp/entry/2015/04/05/234947より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14