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

JavaScriptのDataView.getInt32()メソッドの使い方を徹底解説

はじめに

DataViewオブジェクトのgetInt32()メソッドは、ArrayBuffer内の指定されたバイト位置から符号付き32ビット整数(-2,147,483,648 ~ 2,147,483,647の範囲)を読み取り、その値を返します。バイナリデータを扱う際に非常に便利なメソッドです。

構文

このメソッドの基本構文は以下のとおりです。

dataView.getInt32(byteOffset [, littleEndian]);
  • byteOffset: 読み取りを開始する位置をバイト単位で指定します(必須)。
  • littleEndiantrueを指定するとリトルエンディアン、falseまたは省略した場合はビッグエンディアンとして読み取ります(任意)。

基本的な使用例

次の例では、setInt32()メソッドで値を書き込み、その後getInt32()メソッドで同じ位置から値を読み取っています。

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

出力結果

36274722

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

このメソッドには小数値を直接渡すことができません。小数値を指定した場合でも、自動的に整数値へ変換(切り捨て)されて処理されます。以下の例では、554.36という値が554として格納・読み取られます。

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

出力結果

554

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

DataViewにまだ何も値が格納されていない状態でデータを読み取ろうとした場合、このメソッドはエラーではなく0を返します。これは、初期化されていないバイト列がすべて0で埋められているためです。

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

出力結果

0

まとめ

getInt32()メソッドは、ArrayBuffer上の指定位置から符号付き32ビット整数を読み取るためのメソッドです。主なポイントは以下のとおりです。

  • 第1引数で読み取り開始位置(バイトオフセット)、第2引数でエンディアンを指定できる
  • 小数値を渡すと整数に切り捨てられる
  • 値が未設定の場合は0を返す

バイナリプロトコルの解析やファイルフォーマットの処理など、低レベルなデータ操作が必要な場面で活用してみてください。

  1. JavaScriptの関数パラメーターとは?使い方をサンプルコードで解説

    JavaScriptでは、関数を呼び出すときにさまざまなパラメーター(引数)を渡すことができます。関数側では、渡されたパラメーターを受け取り、それに対して任意の処理を実行することが可能です。また、1つの関数は複数のパラメーターを受け取ることができ、それぞれのパラメーターはカンマ(,)で区切って指定します。さらに、JavaScriptには arguments オブジェクトが用意されており、仮引数として宣言した変数とは別に、実際に関数へ渡されたすべての引数へアクセスできます。以下のサンプルコードでは、Array.from(arguments) を使って受け取った引数を配列化し、順番に画面へ出力して

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

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