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