JavaScript DataView()とは?ArrayBufferのバイナリデータを読み書きする方法
JavaScript の DataView は、ArrayBuffer(バイナリデータ)に対して、さまざまな数値型の読み書きを行うための低レベルインターフェースを提供するオブジェクトです。DataView を使うことで、1バイト単位で細かく制御しながら、Int16、Int32、Float64 など複数の数値型として同じバッファにアクセスできます。
なお、ArrayBuffer はそのままでは直接操作できないため、DataView や TypedArray を介してアクセスする必要があります。
DataView の主なメソッド
- setInt16(offset, value):指定したオフセット位置に 16 ビット整数を書き込む
- getInt16(offset):指定したオフセット位置から 16 ビット整数を読み取る
- その他にも setInt32 / getInt32 / setFloat32 / getFloat64 など、各種ビット幅のメソッドが用意されています
実装例
以下は、JavaScript の DataView を使って ArrayBuffer の内容を書き換え・表示するサンプルコードです。
<!DOCTYPE html>
<html lang="ja">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>JavaScript DataView()</title>
<style>
body {
font-family: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;
}
.sample {
font-size: 20px;
font-weight: 500;
}
</style>
</head>
<body>
<h1>JavaScript DataView()</h1>
<div class="sample"></div>
<button class="Btn">クリックしてください</button>
<h3>
上のボタンをクリックすると、DataView() を使って ArrayBuffer の内容が変更されます
</h3>
<script>
let fillEle = document.querySelector(".sample");
var buffer = new ArrayBuffer(8);
var view1 = new DataView(buffer);
view1.setInt16(0, 0x2721);
fillEle.innerHTML = view1.getInt16(0).toString(16);
document.querySelector(".Btn").addEventListener("click", () => {
fillEle.innerHTML = view1.getInt16(0).toString(2);
});
</script>
</body>
</html>コードの解説
new ArrayBuffer(8)で 8 バイトのバッファを生成します。new DataView(buffer)でそのバッファに対応する DataView を作成します。setInt16(0, 0x2721)により、先頭(オフセット 0)に 16 ビット整数0x2721を書き込みます。- 初期表示では
toString(16)によって 16 進数で値を表示します。 - ボタンをクリックすると
toString(2)により、同じ値を 2 進数で表示します。
実行結果
ページ読み込み時は、書き込んだ値が 16 進数で表示されます。

「クリックしてください」ボタンを押すと、同じ ArrayBuffer の内容が 2 進数で表示されます。

このように DataView を使えば、同一の ArrayBuffer 内のデータを用途に応じて異なる数値型・表現形式で柔軟に扱うことができます。バイナリファイルの解析やネットワークプロトコルの実装など、低レベルなデータ処理が必要な場面で特に役立ちます。
-
【初心者向け】JavaScriptのescape()関数とは?使い方と非推奨の理由を解説
JavaScriptのescape()関数とはJavaScriptのescape()関数は、文字列をエンコードするために使用される関数です。文字列内の特殊文字をASCII形式のエスケープシーケンス(%xx の形式)に変換します。ただし、この関数はECMAScript v3以降で非推奨(deprecated)とされており、現在の開発では使用が推奨されていません。URIのエンコード目的であれば、代わりにencodeURI()やencodeURIComponent()を使用することが標準的な方法です。escape()の使用例それでは、実際にJavaScriptのescape()関数を使用したサンプル
-
JavaScriptのletキーワードとは?ブロックスコープ変数の宣言方法を解説
letキーワードとは 2015年(ECMAScript 2015/ES6)に導入されたletキーワードは、ブロックスコープを持つ変数を宣言するためのものです。letで宣言した変数は、それを囲む波括弧 { } の内側でのみ有効となり、ブロックの外からアクセスしようとするとエラーが発生します。 varとの主な違い スコープ: varは関数スコープですが、letはブロックスコープになります。 再宣言: 同じスコープ内であればvarによる再宣言は可能ですが、letで再宣言するとSyntaxErrorになります。 宣言前の参照: letで宣言した変数は、宣言より前にアクセスするとReferenceE