DataView

DataView ビューは ArrayBuffer の多様な数値型を、プラットフォームのエンディアンに関係なく読み書きするための低レベルインターフェイスを提供します。

構文

new DataView(buffer [, byteOffset [, byteLength]])

引数

buffer
新たな DataView のための記憶領域として用いる、既存の ArrayBuffer です。
byteOffset Optional
指定されたバッファで、新たなビューが参照する最初のバイト位置を示すオフセットを、バイト単位で示します。省略した場合、バッファのビューは最初のバイト位置から参照し始めます。
byteLength Optional
バイト配列内の要素数です。省略した場合、ビューの長さはバッファの長さと同じになります。

戻り値

指定されたデータバッファを示す、新たな DataView オブジェクトを返します。

発生するエラー

RangeError
指定されたビューの byteOffset および byteLength の結果が、バッファの終端を超えた場合に発生します。

説明

エンディアン

多バイトの数値形式は、マシンアーキテクチャによってメモリ内での表現が異なります。これは Endianness で説明しています。DataView のアクセサは、プラットフォームアーキテクチャのエンディアンに関係なくデータにアクセスする方法を明確に制御する手段を提供します。

var littleEndian = (function() {
  var buffer = new ArrayBuffer(2);
  new DataView(buffer).setInt16(0, 256, true /* リトルエンディアン */);
  // Int16Array はプラットフォームのエンディアンを使用する
  return new Int16Array(buffer)[0] === 256;
})();
console.log(littleEndian); // true または false

プロパティ

DataView.length
DataView コンストラクタの length プロパティの値は 3 です。
DataView.prototype
すべての DataView オブジェクトにプロパティを追加できます。

DataView インスタンス

すべての DataView インスタンスは DataView.prototype から継承します。

プロパティ

DataView.prototype.constructor
オブジェクトのプロトタイプを生成する関数を指定します。初期値は標準ビルトインDataViewコンストラクタです。
DataView.prototype.buffer 読取専用
このビューによって参照されるArrayBuffer。構築時に設定されます。読取専用
DataView.prototype.byteLength 読取専用
ArrayBufferの開始位置からこのビューの(バイト単位の)長さ。構築時に設定され、読取専用
DataView.prototype.byteOffset 読取専用
ArrayBufferの開始位置からこのビューの(バイト単位の)オフセット。構築時に設定され、読取専用

メソッド

Read

DataView.prototype.getInt8()
ビューの開始位置から指定されたバイト単位のオフセットで符号付き8ビット整数値(byte)を取得します。
DataView.prototype.getUint8()
ビューの開始位置から指定されたバイト単位のオフセットで符号無し8ビット整数値(unsigned byte) を取得します。
DataView.prototype.getInt16()
ビューの開始位置から指定されたバイト単位のオフセットで符号付き16ビット整数値(short)を取得します。
DataView.prototype.getUint16()
ビューの開始位置からの指定されたバイト単位のオフセットで符号無し16ビット整数値(unsigned short)を取得します。
DataView.prototype.getInt32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット整数値(long)を取得します。
DataView.prototype.getUint32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号無し32ビット整数値(unsigned long)を取得します。
DataView.prototype.getFloat32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット浮動小数点(float)を取得します。
DataView.prototype.getFloat64()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり64ビット浮動小数点(double)を取得します。

Write

DataView.prototype.setInt8()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり8ビット整数値(byte)を格納します。
DataView.prototype.setUint8()
ビューの開始位置からの指定されたバイト単位のオフセットで符号なし8ビット整数値(unsigned byte)を格納します。
DataView.prototype.setInt16()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり16ビット整数値(short)を格納します。
DataView.prototype.setUint16()
ビューの開始位置からの指定されたバイト単位のオフセットで符号無し16ビット整数値(unsigned short)を格納します。
DataView.prototype.setInt32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット整数値(long)を格納します。
DataView.prototype.setUint32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号無し32ビット整数値(unsigned long)を格納します。
DataView.prototype.setFloat32()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり32ビット浮動小数点(float)を格納します。
DataView.prototype.setFloat64()
ビューの開始位置からの指定されたバイト単位のオフセットで符号あり64ビット浮動小数点(double)を格納します。

var buffer = new ArrayBuffer(16);
var dv = new DataView(buffer, 0);

dv.setInt16(1, 42);
dv.getInt16(1); //42

仕様

仕様書 策定状況 コメント
Typed Array Specification 廃止された ECMAScript 6 に置き換え
ECMAScript 2015 (6th Edition, ECMA-262)
DataView の定義
標準 ECMA 標準では最初の定義
ECMAScript 2017 Draft (ECMA-262)
DataView の定義
ドラフト  

ブラウザ実装状況

機能 Chrome Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 9.0 15.0 (15.0) 10 12.1 5.1
機能 Android Chrome for Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 4.0 (有) 15.0 (15) ? 12.0 4.2

Firefox に関する注記

Gecko / SpiderMonkey 40 (Firefox 40 / Thunderbird 40 / SeaMonkey 2.37) より、DataViewnew 演算子を使用して生成しなければなりません。new を伴わずに DataView() を関数として呼び出すと、TypeError が発生するようになりました。

var dv = DataView(buffer, 0); 
// TypeError: calling a builtin DataView constructor without new is forbidden
var dv = new DataView(buffer, 0);

関連情報

  • jDataView: JavaScript library that polyfills and extends the DataView API to all browsers and Node.js.

ドキュメントのタグと貢献者

 このページの貢献者: yyss, teoli, ethertank
 最終更新者: yyss,