5

私がただのバカなら、彼女に喜んでもらえると思います。:)

これが私のコードです:

var t16 = new Uint16Array( new Uint8Array([1, 2, 3, 4]));
console.log(t16.BYTES_PER_ELEMENT);
for( var i = 0; i < t16.length; i++) 
    console.log(t16[i]);

そして、ここに私が得た出力があります:

[02:56:32.197] 2
[02:56:32.197] 1
[02:56:32.197] 2
[02:56:32.197] 3
[02:56:32.197] 4

私が期待するドキュメントから:

2
513
1027

実際のプロジェクトでは、読み取りたい 16 ビット データを含む ArrayBuffer を提供する tar ライブラリを使用していますが、常に 8 ビット値にしかアクセスできません。

私の期待は間違っていますか?少なくとも、 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Typed_arraysの「複雑なデータ構造の操作」セクションを読む方法です。

記録として: Firefox は 23.0.1、Java は Platform SE 7 U25 10.25.2.17、Firefox OS シミュレーターは W7/64 マシン上の 5.0pre3 です。

4

1 に答える 1

7
var t8 = new Uint8Array([1, 2, 3, 4]),
    t16 = new Uint16Array(t8);

そうすれば、Uint16Arrayコンストラクターt8は(配列リテラルと同様に) 通常の配列のように扱いUint8Array、要素がコピーされる新しい配列 (バッファー) を構築します。

ArrayBufferViewon the sameを作成するにはArrayBuffer、そのバッファーをコンストラクターに渡す必要があります。

var t8=new Uint8Array([1, 2, 3, 4]),
    t16 = new Uint16Array( t8.buffer );
//                           ^^^^^^^
console.log(t16.byteLength/t16.length); // or: t16.constructor.BYTES_PER_ELEMENT
for (var i = 0; i < t16.length; i++)
    console.log(t16[i]);
于 2013-08-28T01:45:02.640 に答える