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 の定義
ドラフト  

ブラウザー実装状況

We're converting our compatibility data into a machine-readable JSON format. This compatibility table still uses the old format, because we haven't yet converted the data it contains. Find out how you can help!

機能 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,