我正在第一次用Ruby解压缩二进制文件。已经发现解压缩方法非常有效。根据文档,它最适合8(1字节),16(2字节),32(4字节)和64位(8字节)。
但是现在我必须解压缩5个字节。我该怎么做?
提前谢谢!
答案 0 :(得分:0)
要从字面上解压缩五个字节:str.unpack 'C5'
这为您提供了五个字节值的无符号整数。问题是如何将这些整数重新解释为单个数据类型。打包/解包只能识别两种尺寸的标准功率,因此您必须手动执行该操作。
例如,要获取一个小的endian无符号40位int
bytes = str.unpack 'C5'
int = bytes.map.with_index { |byte, i| byte << (i * 8) }.reduce(:+)
如果您需要做一些更复杂的事情,例如带符号的类型或浮点数……祝您好运。