使用Ruby解包3字节/ 24位数据块

时间:2010-01-24 23:12:48

标签: ruby arrays audio string binary-data

我正在构建一个纯Ruby WAV文件读/写库,学习更深入的Ruby功能。它目前适用于16位音频,因为我能够使用String.unpack('s*')将单个音频样本拉出到有符号整数数组中。然而,我无法理解如何处理24位音频。在这种情况下,每个样本长度为3个字节。在这种情况下你会推荐什么打包/解压缩字符串,我可能不得不彻底改变我的方法(使用填充或类似的东西)?

1 个答案:

答案 0 :(得分:2)

当你使用unpack("s+")时,我假设你的样本是大端的。这是一个不那么快但可行的解决方案。

>> "ABCDEF".scan(/.../).map {|s| (s.reverse + 0.chr ).unpack("V")}.flatten
=> [4276803, 4474182]    #=> [0x414243, 0x444546] in HEX