「BinData」のArray型は連続する短いデータの取り扱い時に便利です。
使い方
16進数リテラルで渡す
16進数リテラルで渡します
data = "\x03\x04\x05\x06\x07\x08\x09"
これを読み込むと
ary = BinData::Array.new(:type => :uint8, :read_until => :eof) ary.read(data) #>> [3, 4, 5, 6, 7, 8, 9]
と、内部的に配列で持ってくれます。
あとは、普通の配列として扱えば良いです
ary[0] #>> 3 ary[5] #>> 8 ary[-1] #>> 9
配列で渡す
配列のまんま渡す場合はassingメソッドを使います。
内部的に、to_aryが使えれば読み出し可能なようです。
ary.assign([3,5,8]) ary #>> [3, 5, 8]
文字列を渡すとどうなるか
試しに文字列を渡すと
data = "1234" #>> "1234" ary.read(data) #>> [49, 50, 51, 52]
と、Asciiで入ってしまします。