JavaScriptのDataView.getUint16()メソッドとは?使い方と実行例をわかりやすく解説
DataViewオブジェクトのgetUint16()メソッドは、ArrayBuffer内の指定された位置(バイトオフセット)から符号なし16ビット整数を読み取り、その値を返します。バイナリデータを直接操作したい場合に活躍するメソッドです。
構文
基本的な構文は以下のとおりです。
dataView.getUint16(byteOffset, littleEndian);
byteOffset:読み取りを開始する位置をバイト単位で指定します。
littleEndian:省略可能な引数です。true を指定するとリトルエンディアン形式で読み取り、false または省略した場合はビッグエンディアン形式で読み取ります。
使用例
次の例では、setUint16() メソッドで ArrayBuffer の1バイト目に値「45544」を書き込み、getUint16() メソッドでその値を読み出しています。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint16(1, 45544);
document.write(dataView.getUint16(1));
</script>
</body>
</html>
実行結果
45544
小数値を渡した場合
このメソッドに小数(浮動小数点数)の値を渡すことはできません。小数を渡した場合、自動的に整数値へ変換されて処理されます。次の例では「455.44」が整数「455」として扱われます。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint16(1, 455.44);
document.write(dataView.getUint16(1));
</script>
</body>
</html>
実行結果
455
値が格納されていない場合
DataView に何も値が書き込まれていない状態でデータを取得しようとした場合、このメソッドは「0」を返します。ArrayBuffer は初期状態ですべてのバイトが0で埋められているためです。
<html>
<head>
<title>JavaScript Example</title>
</head>
<body>
<script type="text/javascript">
var arrayBuffer = new ArrayBuffer(20);
var dataView = new DataView(arrayBuffer);
dataView.setUint16(1);
document.write(dataView.getUint16(1));
</script>
</body>
</html>
実行結果
0
-
JavaScriptのapply()メソッドとは?別オブジェクトで関数を再利用する方法を解説
JavaScriptのapply()メソッドとは JavaScriptのapply()メソッドを使用すると、あるオブジェクト向けに定義したメソッドを、別のオブジェクトでもそのまま再利用できます。最大の特徴は、関数に渡す引数を配列としてまとめて指定できる点です。これにより、柔軟で使い回しやすい関数設計が可能になります。 apply()の基本構文は以下のとおりです。 func.apply(thisArg, [arg1, arg2, ...]) 第1引数(thisArg):関数内でthisとして参照されるオブジェクトを指定します。 第2引数(argsArray):関数へ渡す引数を配列形式で指定しま
-
JavaScript DataView()とは?ArrayBufferのバイナリデータを読み書きする方法
JavaScript の DataView は、ArrayBuffer(バイナリデータ)に対して、さまざまな数値型の読み書きを行うための低レベルインターフェースを提供するオブジェクトです。DataView を使うことで、1バイト単位で細かく制御しながら、Int16、Int32、Float64 など複数の数値型として同じバッファにアクセスできます。なお、ArrayBuffer はそのままでは直接操作できないため、DataView や TypedArray を介してアクセスする必要があります。DataView の主なメソッドsetInt16(offset, value):指定したオフセット位置に