C#のBitConverter.ToInt64()メソッドとは?構文と使い方を実例付きで解説
C#のBitConverter.ToInt64()メソッドは、バイト配列内の指定した位置から8バイトを読み取り、それを64ビット符号付き整数(long型)に変換して返すためのメソッドです。バイト列と数値の相互変換が必要な場面、たとえばバイナリデータの解析やネットワーク通信などでよく利用されます。
構文
このメソッドの構文は以下のとおりです。
public static long ToInt64 (byte[] val, int begnIndex);
パラメータ
- val:変換元となるバイト配列。
- begnIndex:val 内で変換を開始する位置(インデックス)。
指定した位置から8バイト分が読み取られ、リトルエンディアン形式として64ビット符号付き整数に変換されます。配列の残りが8バイト未満の場合は例外が発生するため注意が必要です。
使用例1
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main() {
byte[] arr = { 0, 10, 15, 20, 26, 30, 34, 42, 50};
Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));
for (int i = 0; i < arr.Length - 7; i = i + 8) {
long res = BitConverter.ToInt64(arr, i);
Console.WriteLine("\nValue = "+arr[i]);
Console.WriteLine("Result = "+res);
}
}
}出力結果
上記のコードを実行すると、次のような出力が得られます。
Byte Array = 00-0A-0F-14-1A-1E-22-2A-32 Value = 0 Result = 3036022196155648512
この例では、インデックス0から8バイト分(00-0A-0F-14-1A-1E-22-2A)が読み取られ、1つのlong型の値に変換されています。
使用例2
続いて、別の例を確認してみましょう。
using System;
public class Demo {
public static void Main() {
byte[] arr = {0, 0, 0, 10, 20, 0, 0, 25, 30, 0, 0, 0, 35, 45, 55, 65, 75};
Console.WriteLine("Byte Array = {0} ",
BitConverter.ToString(arr));
for (int i = 0; i < arr.Length - 7; i = i + 8) {
long res = BitConverter.ToInt64(arr, i);
Console.WriteLine("\nValue = "+arr[i]);
Console.WriteLine("Result = "+res);
}
}
}出力結果
実行すると、以下の出力が表示されます。
Byte Array = 00-00-00-0A-14-00-00-19-1E-00-00-00-23-2D-37-41-4B Value = 0 Result = 1801439937015316480 Value = 30 Result = 4699274364531507230
このように、ループ処理と組み合わせることで、バイト配列を8バイトずつ区切りながら順番に64ビット符号付き整数へ変換できます。ループ条件を「arr.Length - 7」としているのは、残りのバイト数が8バイトに満たない場合に変換を行わないようにするためです。
-
C#のSequenceEqualメソッドの使い方を徹底解説!コレクションの等価性を判定する方法
C#のSequenceEqualメソッドは、2つのコレクションが等しいかどうかを判定するために使用されるLINQのメソッドです。要素の数だけでなく、順序も含めて各要素が一致しているかどうかを比較し、結果をbool型(true / false)で返します。このメソッドを使用するには、System.Linq名前空間が必要です。配列やリストなど、IEnumerableインターフェースを実装するあらゆるコレクションに対して利用できます。サンプルデータの準備まず、3つの文字列配列を用意してみましょう。string[] arr1 = { This, is, it }; string[] arr2 = {
-
C#のAggregateメソッドとは?配列要素を集計・演算する方法を解説
C#のLINQに用意されているAggregate(集計)メソッドを使うと、Sum(合計)、Min(最小値)、Max(最大値)、Average(平均)といった数学的な演算を柔軟に実装できます。Aggregateメソッドは、ラムダ式で指定した処理をシーケンスの各要素に順番に適用し、最終的に1つの結果へと集約します。ここでは、配列の全要素を掛け合わせる例を通して、その使い方を見ていきましょう。サンプル:配列要素の積を求めるまずは、次のような整数型の配列を用意します。int[] arr = { 10, 15, 20 };この配列に対して、Aggregate()メソッドを次のように呼び出します。 x *