1

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

4

1 回答 1

2

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

>> "ABCDEF".scan(/.../).map {|s| (s.reverse + 0.chr ).unpack("V")}.flatten
=> [4276803, 4474182]    #=> [0x414243, 0x444546] in HEX
于 2010-01-25T02:04:44.083 回答