有一种解包方法,可以将二进制字符串表示为整数,字符串等的数组,但是我找不到拆分任意位的方法(例如11 b i ts)。
Ruby unpack binary解决了任意字节长度的字符串的问题,但不适用于位。
我想实现这样的东西:
'binarydata'
.unpack('b11b11b11b11b11') # => ["01000110100",... ]
.map { |b| b.to_i(2) } # => [564,948,628,308,372]
.pack('magic') # => 'binarydata'
问题在于它不可读并且无法构建字符串(看起来不高效)。另外,解压缩部分需要知道大小(因为'b11*'
不是有效的模板字符串。