new DataView【コンストラクタ】
get~【データ値取得】メソッド
set~【データ値設定】メソッド

new DataView【コンストラクタ】

メモ

概要

  • DataView【データビュー】のコンストラクタ

関連

外部リンク

構文

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

bufferArrayBuffer【バイナリデータ配列】
byteOffsetバイト単位オフセット (省略:0 先頭)
byteLengthバイト単位サイズ (省略:末尾まで)

TypeError 
new 無しで呼び出し
bufferがArrayBuffer【バイナリデータ配列】以外
RangeError 指定範囲がbufferの領域外
byteOffset < 0
bufferのサイズ < byteOffset
bufferのサイズ < byteOffsetbyteLength

var buff = new ArrayBuffer(100);
var dataView = new DataView(buff, 50, 10);
console.log(dataView.byteLength);
// 出力:10
console.log(dataView.byteOffset);
// 出力:50

DataView.prototype.get~【データ値取得】

メモ

概要

  • DataView【データビュー】からデータ値を取得
    • エンディアン (endianness) の指定が可能

関連

外部リンク

構文

getBigInt64( byteOffset [, littleEndian ] )  // 64ビット 符号あり整数 取得 
getBigUint64( byteOffset [, littleEndian ] ) // 64ビット 符号なし整数 取得 
getFloat32( byteOffset [, littleEndian ] )   // 32ビット IEEE 浮動小数点数 取得
getFloat64( byteOffset [, littleEndian ] )   // 64ビット IEEE 浮動小数点数 取得
getInt8( byteOffset )                           // 8ビット  符号あり整数 取得
getInt16( byteOffset [, littleEndian ] )     // 16ビット 符号あり整数 取得
getInt32( byteOffset [, littleEndian ] )     // 32ビット 符号あり整数 取得
getUint8( byteOffset )                          // 8ビット  符号なし整数 取得
getUint16( byteOffset [, littleEndian ] )    // 16ビット 符号なし整数 取得
getUint32( byteOffset [, littleEndian ] )    // 32ビット 符号なし整数 取得

取得したデータ値
byteOffsetオフセット (バイト単位)
littleEndianリトルエンディアンか否か (省略:false)
true:リトルエンディアン (little endian) 下位バイトから格納 (Intel x86系 等)
false:ビッグエンディアン (big endian) 上位バイトから格納 (Motorola MC68000系 等)

RangeError 指定範囲がビューの領域外
byteOffset < 0
ビューのサイズ < byteOffsetデータ型のバイト数

var buff = new ArrayBuffer(20);
var dataView1 = new DataView(buff, 4, 12);  // 4 バイト目から 12バイト (3 要素)
console.log(dataView1.byteOffset, dataView1.byteLength);
// 出力:4 12

var byteOffset = 0;
for (var i = 0; i < (dataView1.byteLength / 4); i++) {
dataView1.setInt32(byteOffset, (0x10 + i));
console.log("(" + byteOffset + ")",
              "0x" + dataView1.getInt32(byteOffset).toString(16));
  byteOffset += 4;
}
// 出力:(0) 0x10
// 出力:(4) 0x11
// 出力:(8) 0x12

var dataView2 = new DataView(buff);  // 0 バイト目から 20バイト (5 要素)
console.log(dataView2.byteOffset, dataView2.byteLength);
// 出力:0 20
byteOffset = 0;
for (var i = 0; i < (dataView2.byteLength / 4); i++) {
  console.log("(" + byteOffset + ")",
              "0x" + dataView2.getInt32(byteOffset).toString(16),
              "0x" + dataView2.getInt32(byteOffset, true).toString(16));
  byteOffset += 4;
}
// 出力:(0) 0x0 0x0
// 出力:(4) 0x10 0x10000000
// 出力:(8) 0x11 0x11000000
// 出力:(12) 0x12 0x12000000
// 出力:(16) 0x0 0x0

DataView.prototype.set~【データ値設定】

メモ

概要

  • DataView【データビュー】にデータ値を設定
    • エンディアン (endianness) の指定が可能

関連

外部リンク

構文

setBigInt64( byteOffset, value [, littleEndian ] )  // 64ビット 符号あり整数 設定 
setBigUint64( byteOffset, value [, littleEndian ] ) // 64ビット 符号なし整数 設定 
setFloat32( byteOffset, value [, littleEndian ] )   // 32ビット IEEE 浮動小数点数 設定
setFloat64( byteOffset, value [, littleEndian ] )   // 64ビット IEEE 浮動小数点数 設定
setInt8( byteOffset, value )                           // 8ビット  符号あり整数 設定
setInt16( byteOffset, value [, littleEndian ] )     // 16ビット 符号あり整数 設定
setInt32( byteOffset, value [, littleEndian ] )     // 32ビット 符号あり整数 設定
setUint8( byteOffset, value )                          // 8ビット  符号なし整数 設定
setUint16( byteOffset, value [, littleEndian ] )    // 16ビット 符号なし整数 設定
setUint32( byteOffset, value [, littleEndian ] )    // 32ビット 符号なし整数 設定

なし
byteOffsetオフセット (バイト単位)
value設定値
littleEndianリトルエンディアンか否か (省略:false)
true:リトルエンディアン (little endian) 下位バイトから格納 (Intel x86系 等)
false:ビッグエンディアン (big endian) 上位バイトから格納 (Motorola MC68000系 等)

RangeError 指定範囲がビューの領域外
byteOffset < 0
ビューのサイズ < byteOffsetデータ型のバイト数