コンテンツにスキップ

JavaScript/DataView

出典: フリー教科書『ウィキブックス(Wikibooks)』

DataView

[編集]

概要

[編集]

DataView は、JavaScript における低レベルのバイナリデータ操作を行うためのオブジェクトです。ArrayBuffer 上のデータに対して、ビッグエンディアンやリトルエンディアンなどの異なるエンディアン形式を指定して、様々なデータ型の読み書きが可能です。これにより、バイナリデータを柔軟に扱うことができます。

コンストラクタ

[編集]

DataView()

[編集]
new DataView(buffer [, byteOffset [, length]])
  • 引数
    • buffer: 操作対象の ArrayBuffer オブジェクト
    • byteOffset (オプション): データビューの開始位置(デフォルトは 0)
    • length (オプション): データビューが操作するバッファの長さ(デフォルトは buffer.length
  • 戻り値: 新しい DataView オブジェクト

プロパティ

[編集]

DataView には、データを操作するためのメソッド群があり、プロパティは提供されていませんが、指定されたバッファ内のデータを読み書きするために、各メソッドを利用することができます。

メソッド

[編集]

DataView.prototype.getInt8()

[編集]
dataView.getInt8(byteOffset)
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
  • 戻り値: 8ビット符号付き整数(Int8)として解釈した値

DataView.prototype.getUint8()

[編集]
dataView.getUint8(byteOffset)
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
  • 戻り値: 8ビット符号なし整数(Uint8)として解釈した値

DataView.prototype.getInt16()

[編集]
dataView.getInt16(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 16ビット符号付き整数(Int16)として解釈した値

DataView.prototype.getUint16()

[編集]
dataView.getUint16(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 16ビット符号なし整数(Uint16)として解釈した値

DataView.prototype.getInt32()

[編集]
dataView.getInt32(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 32ビット符号付き整数(Int32)として解釈した値

DataView.prototype.getUint32()

[編集]
dataView.getUint32(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 32ビット符号なし整数(Uint32)として解釈した値

DataView.prototype.getFloat32()

[編集]
dataView.getFloat32(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 32ビット浮動小数点数(Float32)として解釈した値

DataView.prototype.getFloat64()

[編集]
dataView.getFloat64(byteOffset [, littleEndian])
  • 引数
    • byteOffset: 読み取る位置のバイトオフセット
    • littleEndian (オプション): true の場合、リトルエンディアン形式で解釈(デフォルトは false)
  • 戻り値: 64ビット浮動小数点数(Float64)として解釈した値

DataView.prototype.setInt8()

[編集]
dataView.setInt8(byteOffset, value)
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(8ビット符号付き整数)
  • 戻り値: なし

DataView.prototype.setUint8()

[編集]
dataView.setUint8(byteOffset, value)
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(8ビット符号なし整数)
  • 戻り値: なし

DataView.prototype.setInt16()

[編集]
dataView.setInt16(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(16ビット符号付き整数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

DataView.prototype.setUint16()

[編集]
dataView.setUint16(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(16ビット符号なし整数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

DataView.prototype.setInt32()

[編集]
dataView.setInt32(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(32ビット符号付き整数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

DataView.prototype.setUint32()

[編集]
dataView.setUint32(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(32ビット符号なし整数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

DataView.prototype.setFloat32()

[編集]
dataView.setFloat32(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(32ビット浮動小数点数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

DataView.prototype.setFloat64()

[編集]
dataView.setFloat64(byteOffset, value [, littleEndian])
  • 引数
    • byteOffset: 書き込む位置のバイトオフセット
    • value: 書き込む値(64ビット浮動小数点数)
    • littleEndian (オプション): true の場合、リトルエンディアン形式で書き込む(デフォルトは false)
  • 戻り値: なし

使用例

[編集]
let buffer = new ArrayBuffer(16);
let view = new DataView(buffer);

view.setInt8(0, 42);
console.log(view.getInt8(0)); // 42

関連オブジェクト

[編集]