0

Google ChromeのJavaScriptを使用して一連のバイトから、ArrayBufferから数値を生成して、MP3タグ情報を取得しようとしています。ID3v2仕様で、タグサイズを取得するには、特定の場所で4バイトを取得し、それらから整数値を取得する必要があると規定されています。ただし、次の場合を除きます。

ID3v2タグサイズは4バイトでエンコードされ、最上位ビット(ビット7)はすべてのバイトでゼロに設定され、合計28ビットになります。ゼロにされたビットは無視されるため、257バイトの長さのタグは$ 00 000201として表されます。

これを行うための素朴な方法は、各バイトを調べて各ビットの値を取得し、元の4バイトの7ビットから生成された新しい4バイトの値を生成することです。たとえば、これらの4つの元のバイトがあります。 :

0111 1111 0111 1111 0111 1111 0111 1111

新しいArrayBufferを作成し、各ビットをループして以下を生成します。

0000 1111 1111 1111 1111 1111 1111 1111

次に、 Uint32Arrayを使用してこの32ビット整数から整数値を計算します

これを行う簡単な方法はありますか?

4

2 に答える 2

2

あなたがそれについて考えるならば、あなたが持っているのは4桁の基数128の数字です。各バイトは1つの「数字」を保持し、各「数字」は0〜127(両端を含む)の値です。したがって、それらを使用可能な数値に変換するには、他のベースの場合と同じように乗算して加算します。最下位の「桁」は「1の位」の桁で、次の桁は「128」です。次は「16384s」で、最上位桁は「2097152s」です。

新しい「ArrayBuffer」APIに精通していないため、これをコードで表示する方法が正確にはわかりません。「ArrayBufferView」などを使用して値にアクセスしますよね?個々のバイトを取得するのが簡単であると仮定すると、乗算と加算を行うのは非常に単純な関数であるはずです。

于 2011-02-12T17:19:01.727 に答える
1

Chromeをターゲットにしている場合は、DataViewsを使用してバイトストリームのさまざまなデータ型を読み取ることもできます:https ://developer.mozilla.org/en/JavaScript_typed_arrays/DataView

于 2011-03-11T08:48:35.830 に答える