JavaScript
 Computer >> コンピューター >  >> プログラミング >> JavaScript

【初心者向け】JavaScriptのDataView.setUint32()関数の使い方を徹底解説

DataViewオブジェクトのsetUint32()メソッドは、ArrayBuffer上の指定した位置(バイトオフセット)に、符号なし32ビット整数(unsigned 32-bit integer)を書き込むための関数です。バイナリデータを直接扱う場面、たとえばファイル形式の解析やネットワークプロトコルの実装などで活用されます。

構文

基本的な構文は以下のとおりです。

dataView.setUint32(byteOffset, value[, littleEndian]);

パラメータの説明

  • byteOffset:値を書き込む開始位置をバイト単位で指定します。
  • value:書き込む符号なし32ビット整数の値を指定します。
  • littleEndian(省略可能):trueを指定するとリトルエンディアン、falseまたは省略した場合はビッグエンディアンとして書き込まれます。

なお、指定したオフセットがバッファの範囲を超える場合はRangeErrorが発生する点にも注意してください。

使用例

次の例では、20バイトのArrayBufferを作成し、その1バイト目の位置に値「45544」を書き込んだ後、getUint32()メソッドで読み出して表示しています。

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(20);
      var dataView = new DataView(arrayBuffer);
      dataView.setUint32(1, 45544);
      document.write(dataView.getUint32(1));
   </script>
</body>
</html>

出力結果

45544

小数値を渡した場合の挙動

setUint32()には小数値を渡すことができません。小数を指定した場合、整数部分のみが切り捨てられて格納される仕様になっています。以下の例では「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.setUint32(1, 455.44);
      document.write(dataView.getUint32(1));
   </script>
</body>
</html>

出力結果

455

値が格納されていない場合の挙動

DataViewに対して値を書き込まずにデータを読み出そうとした場合、この関数は0を返します。以下の例では、第二引数を省略してsetUint32()を呼び出しているため、0が格納された状態になります。

<html>
<head>
   <title>JavaScript Example</title>
</head>
<body>
   <script type="text/javascript">
      var arrayBuffer = new ArrayBuffer(20);
      var dataView = new DataView(arrayBuffer);
      dataView.setUint32(1);
      document.write(dataView.getUint32(1));
   </script>
</body>
</html>

出力結果

0

まとめ

setUint32()は、DataViewを介してArrayBuffer内の任意の位置に符号なし32ビット整数を書き込むメソッドです。小数は切り捨てられ、未初期化の領域から読み出した場合は0が返るという挙動を理解しておくと、バイナリ操作時の予期しないバグを防ぐことができます。

  1. JavaScriptのapply()メソッドとは?別オブジェクトで関数を再利用する方法を解説

    JavaScriptのapply()メソッドとは JavaScriptのapply()メソッドを使用すると、あるオブジェクト向けに定義したメソッドを、別のオブジェクトでもそのまま再利用できます。最大の特徴は、関数に渡す引数を配列としてまとめて指定できる点です。これにより、柔軟で使い回しやすい関数設計が可能になります。 apply()の基本構文は以下のとおりです。 func.apply(thisArg, [arg1, arg2, ...]) 第1引数(thisArg):関数内でthisとして参照されるオブジェクトを指定します。 第2引数(argsArray):関数へ渡す引数を配列形式で指定しま

  2. JavaScript DataView()とは?ArrayBufferのバイナリデータを読み書きする方法

    JavaScript の DataView は、ArrayBuffer(バイナリデータ)に対して、さまざまな数値型の読み書きを行うための低レベルインターフェースを提供するオブジェクトです。DataView を使うことで、1バイト単位で細かく制御しながら、Int16、Int32、Float64 など複数の数値型として同じバッファにアクセスできます。なお、ArrayBuffer はそのままでは直接操作できないため、DataView や TypedArray を介してアクセスする必要があります。DataView の主なメソッドsetInt16(offset, value):指定したオフセット位置に