我正在构建一个纯Ruby WAV文件读/写库,学习更深入的Ruby功能。它目前适用于16位音频,因为我能够使用String.unpack('s*')
将单个音频样本拉出到有符号整数数组中。然而,我无法理解如何处理24位音频。在这种情况下,每个样本长度为3个字节。在这种情况下你会推荐什么打包/解压缩字符串,我可能不得不彻底改变我的方法(使用填充或类似的东西)?
答案 0 :(得分:2)
当你使用unpack("s+")
时,我假设你的样本是大端的。这是一个不那么快但可行的解决方案。
>> "ABCDEF".scan(/.../).map {|s| (s.reverse + 0.chr ).unpack("V")}.flatten
=> [4276803, 4474182] #=> [0x414243, 0x444546] in HEX