次のアイテムのバイト長、次にそのアイテムのバイト、次のアイテムのバイトサイズなどを指定する整数を持つように構成された3つの文字列のパックされた文字列があります。
[a.bytesize, a, b.bytesize, b, c.bytesize, c].pack("na*na*na*")
それを簡単な方法で適切に解凍するにはどうすればよいですか?この問題に対する Perl の解決策は次のとおりです。
my($a, $b, $c) = unpack("(n/a*)3", $data)
アンパックで「/」と括弧をサポートしていないように見えるルビーの場合、次のようなものを使用しています。
vals = []
3.times do
size = data.unpack("n").first
data.slice!(0, 2)
vals << data.unpack("a#{size}").first
data.slice!(0, size)
end
これにもっと簡単な方法はありますか?