JavaScriptのDataView.getUint8()関数とは?使い方をわかりやすく解説
DataViewのgetUint8()関数は、指定されたバイト位置にある符号なし8ビット整数(0〜255の範囲の値)を取得して返します。
構文
基本的な構文は以下の通りです。
dataView.getUint8(byteOffset);
引数byteOffsetには、ArrayBufferの先頭から数えたバイト単位のオフセット(読み込みを開始する位置)を指定します。
使用例1:基本的な使い方
次の例では、setUint8()メソッドで値を書き込み、getUint8()メソッドでその値を読み出しています。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint8(1, 657);
document.write(dataView.getUint8(1));
</script>
</body>
</html>
出力
145
657は8ビットで表現できる範囲(0〜255)を超えているため、256で割った余りである「145」が格納されます。その結果、getUint8(1)は145を返します。
使用例2:小数値を渡した場合
この関数に小数値を渡すことはできません。小数を指定した場合は、小数点以下が切り捨てられ、整数値として扱われます。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint8(1, 657.82);
document.write(dataView.getUint8(1));
</script>
</body>
</html>
出力
145
657.82は657として処理され、256で割った余りの「145」が返されます。
使用例3:値が格納されていない場合
DataViewに何も値が格納されていない状態でデータを取得しようとすると、この関数は「0」を返します。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint8(1);
document.write(dataView.getUint8(1));
</script>
</body>
</html>
出力
0
このように、getUint8()は初期化されていないバッファから値を読み出してもエラーにはならず、0を返す仕様になっています。バイナリデータを扱う際は、範囲外の値がラップされる挙動や、初期値が0である点に注意して使用しましょう。
-
JavaScriptの関数パラメーターとは?使い方をサンプルコードで解説
JavaScriptでは、関数を呼び出すときにさまざまなパラメーター(引数)を渡すことができます。関数側では、渡されたパラメーターを受け取り、それに対して任意の処理を実行することが可能です。また、1つの関数は複数のパラメーターを受け取ることができ、それぞれのパラメーターはカンマ(,)で区切って指定します。さらに、JavaScriptには arguments オブジェクトが用意されており、仮引数として宣言した変数とは別に、実際に関数へ渡されたすべての引数へアクセスできます。以下のサンプルコードでは、Array.from(arguments) を使って受け取った引数を配列化し、順番に画面へ出力して
-
JavaScript DataView()とは?ArrayBufferのバイナリデータを読み書きする方法
JavaScript の DataView は、ArrayBuffer(バイナリデータ)に対して、さまざまな数値型の読み書きを行うための低レベルインターフェースを提供するオブジェクトです。DataView を使うことで、1バイト単位で細かく制御しながら、Int16、Int32、Float64 など複数の数値型として同じバッファにアクセスできます。なお、ArrayBuffer はそのままでは直接操作できないため、DataView や TypedArray を介してアクセスする必要があります。DataView の主なメソッドsetInt16(offset, value):指定したオフセット位置に