我有一个由 3 个字符串组成的打包字符串,它以某种方式组成,因此我有一个整数,指定下一项的字节长度,然后是该项目的字节,然后是下一项的字节大小等,就像有人这样做:
[a.bytesize, a, b.bytesize, b, c.bytesize, c].pack("na*na*na*")
我怎样才能以简单的方式正确解压?这个问题的 Perl 解决方案是:
my($a, $b, $c) = unpack("(n/a*)3", $data)
对于 ruby,它显然不支持 unpack 中的 '/' 和括号,我使用的是类似的东西:
vals = []
3.times do
size = data.unpack("n").first
data.slice!(0, 2)
vals << data.unpack("a#{size}").first
data.slice!(0, size)
end
有没有更简单的方法?