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

C#のBitConverter.ToDouble()メソッドとは?使い方とサンプルコードを解説


C#のBitConverter.ToDouble()メソッドは、バイト配列内の指定された位置から8バイトを読み取り、それを倍精度浮動小数点数(double型)に変換して返すメソッドです。バイナリデータの解析や通信プロトコルの処理などでよく利用されます。

構文

構文は以下の通りです。

public static double ToDouble (byte[] val, int begnIndex);

各パラメータの意味は次の通りです。

  • val: 変換元となるバイト配列
  • begnIndex: 読み取りを開始するval内の位置(インデックス)

例外について

このメソッドを使用する際には、以下の例外に注意が必要です。

  • ArgumentNullException: valがnullの場合にスローされます。
  • ArgumentException: begnIndex以降に8バイト分のデータが存在しない場合(begnIndex + 8が配列の長さを超える場合)にスローされます。

使用例

それでは、実際のコード例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      byte[] arr = { 0, 2, 5, 10, 20, 26, 34, 42, 50, 58, 66, 74, 82, 89, 97, 107, 115};
      Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));
      for (int i = 1; i < arr.Length - 7; i = i + 8) {
         double values = BitConverter.ToDouble(arr, i);
         Console.WriteLine("\nValue = "+arr[i]);
         Console.WriteLine("Result = "+values);
      }
   }
}

実行結果

このコードを実行すると、以下の出力が得られます。

Byte Array = 00-02-05-0A-14-1A-22-2A-32-3A-42-4A-52-59-61-6B-73
Value = 2
Result = 4.84667324189914E-67
Value = 58
Result = 9.57203245252997E+247

別の使用例

続いて、要素数が少ない配列を使った別の例を見てみましょう。

using System;
public class Demo {
   public static void Main(){
      byte[] arr = { 0, 3, 7, 10, 18, 20, 25, 26, 34};
      Console.WriteLine("Byte Array = {0} ",
      BitConverter.ToString(arr));
      for (int i = 1; i < arr.Length - 7; i = i + 8) {
         double values = BitConverter.ToDouble(arr, i);
         Console.WriteLine("\nValue = "+arr[i]);
         Console.WriteLine("Result = "+values);
      }
   }
}

実行結果

このコードを実行すると、以下の出力が得られます。

Byte Array = 00-03-07-0A-12-14-19-1A-22
Value = 3
Result = 2.09001158167895E-144

まとめ

BitConverter.ToDouble()メソッドを使うことで、バイト配列から簡単にdouble型の値を復元できます。ただし、指定位置から8バイト分のデータが必ず必要になるため、インデックスの範囲チェックを忘れないようにしましょう。


  1. C#のConvert.ToDoubleメソッドで値をdouble型に変換する方法

    C#のConvert.ToDoubleメソッドとはC#では、指定した値を倍精度浮動小数点数(double型)に変換したい場合、Convert.ToDouble()メソッドを使用します。このメソッドは、数値型だけでなく文字列などさまざまな型の値をdouble型に変換できる便利なメソッドです。ここでは、long型の値をdouble型に変換する例を紹介します。変換元のlong型の値まず、変換対象となるlong型の値を用意します。long[] val = { 340, -200};double型への変換Convert.ToDouble()メソッドを使って、これらの値をdouble型に変換します。dou

  2. C#のSequenceEqualメソッドの使い方を徹底解説!コレクションの等価性を判定する方法

    C#のSequenceEqualメソッドは、2つのコレクションが等しいかどうかを判定するために使用されるLINQのメソッドです。要素の数だけでなく、順序も含めて各要素が一致しているかどうかを比較し、結果をbool型(true / false)で返します。このメソッドを使用するには、System.Linq名前空間が必要です。配列やリストなど、IEnumerableインターフェースを実装するあらゆるコレクションに対して利用できます。サンプルデータの準備まず、3つの文字列配列を用意してみましょう。string[] arr1 = { This, is, it }; string[] arr2 = {