1


1

Rubyを使用した3バイト/ 24ビットデータチャンクのアンパック

純粋なRuby WAVファイルの読み取り/書き込みライブラリを構築し、Rubyの機能をより深く学びます。 `String.unpack( 's *')`を使用して個々のオーディオサンプルを符号付き整数の配列に引き出すことができるため、現在は16ビットオーディオでうまく機能しています。 ただし、24ビットオーディオの処理方法を考えるのに苦労しています。 その場合の各サンプルの長さは3バイトです。 その場合、どのパック/アンパック文字列をお勧めしますか?(パディングなどを使用して)アプローチを大幅に変更する必要がありますか?

1 Answer


2


`unpack(" s + ")`を使用したので、サンプルがビッグエンディアンであると仮定します。 これはそれほど高速ではありませんが、実行可能なソリューションです。

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