DataView

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

構文

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

引数

buffer
新たな DataView のための記憶領域として用いる、既存の ArrayBuffer または SharedArrayBuffer です。
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 インスタンスは、DataView.prototype から継承します。また、すべての DataView オブジェクトにプロパティを追加できます。

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 Latest Draft (ECMA-262)
DataView の定義
ドラフト  

ブラウザー実装状況

機能 Chrome Edge Firefox (Gecko) Internet Explorer Opera Safari
基本サポート 9.0 12 15.0 (15.0) 10 12.1 5.1
SharedArrayBuffer 未サポート 未サポート 53 (53) [1] 未サポート 未サポート 未サポート
機能 Android Android 版 Chrome Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
基本サポート 4.0 (有) 15.0 (15) ? 12.0 4.2
SharedArrayBuffer 未サポート 未サポート 53 (53) [1] 未サポート 未サポート 未サポート

[1] 共有メモリー機能は設定で無効化しています。about:config で javascript.options.shared_memorytrue に設定してください。

互換性に関する注記

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);

関連情報

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

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