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

JavaScriptのDataView.getInt8()関数の使い方を徹底解説

DataViewオブジェクトのgetInt8()メソッドは、ArrayBuffer内の指定されたバイト位置(バイトオフセット)から、符号付き8ビット整数(-128〜127)を読み取り、その値を返します。バイナリデータを扱う際に、1バイト単位で数値を取得したい場合に便利なメソッドです。

構文

getInt8()メソッドの基本的な構文は以下のとおりです。

dataView.getInt8(byteOffset);

byteOffsetには、読み取りを開始するバイト位置を0以上の整数で指定します。この引数は必須であり、省略するとエラーが発生します。

使用例

以下の例では、20バイトのArrayBufferを作成し、DataView経由で1バイト目に値362を書き込んだ後、getInt8()で読み取っています。

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

出力結果

106

出力が「106」になるのは、8ビットに収まらない値は256でラップアラウンドされるためです。362を256で割った余りは106となり、その値が格納されます。

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

setInt8()には小数値を渡すことができません。小数を指定した場合、自動的に整数へと変換(切り捨て)されてから処理されます。

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

出力結果

106

この例では362.23が整数362に変換されてから書き込まれるため、前の例と同じく「106」が出力されます。

何も格納されていない場合の戻り値

DataViewに値を書き込まずにgetInt8()を実行した場合、初期化されたバッファの内容はすべて0であるため、このメソッドは「0」を返します。

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

出力結果

0

まとめ

getInt8()は、指定したバイトオフセットから符号付き8ビット整数を読み取るシンプルなメソッドです。ポイントを整理すると以下のようになります。

  • 読み取れる値の範囲は-128〜127
  • 範囲外の値は256でラップアラウンドされる
  • 小数値は整数に変換されてから処理される
  • 未書き込みの領域からは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):指定したオフセット位置に