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

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

C#のBitConverter.ToUInt64()メソッドは、バイト配列内の指定された位置から8バイトを読み込み、それを64ビット符号なし整数(ulong)に変換して返すためのメソッドです。バイナリデータの解析や通信プロトコルの処理など、バイト列を数値として扱いたい場面で活用されます。

構文

public static ulong ToUInt64 (byte[] val, int begnIndex);

パラメータ

  • val:変換元となるバイト配列です。
  • begnIndex:変換を開始する位置(インデックス)です。この位置から8バイトが読み取られます。

使用例1

以下の例では、9要素のバイト配列を作成し、インデックス1の位置から8バイトを取り出して64ビット符号なし整数に変換しています。

using System;
public class Demo {
    public static void Main() {
        byte[] arr = { 0, 0, 1, 3, 5, 7, 9, 11, 15 };
        int count = arr.Length;
        Console.Write("Byte Array... ");
        for (int i = 0; i < count; i++) {
            Console.Write("\n"+arr[i]);
        }
        Console.WriteLine("\n\nByte Array (String representation) = {0} ",
        BitConverter.ToString(arr));
        for (int i = 1; i < arr.Length - 7; i = i + 8) {
            ulong res = BitConverter.ToUInt64(arr, i);
            Console.WriteLine("\nValue = "+arr[i]);
            Console.WriteLine("Result = "+res);
        }
    }
}

出力結果

Byte Array...
0
0
1
3
5
7
9
11
15
Byte Array (String representation) = 00-00-01-03-05-07-09-0B-0F
Value = 0
Result = 1083970061066240256

使用例2

次の例では、18要素のより長いバイト配列を使用し、forループによって複数の位置から順に値を変換しています。ループの条件式「i < arr.Length - 7」により、末尾に8バイト分のデータが存在する位置だけが処理対象になります。

using System;
public class Demo {
    public static void Main() {
        byte[] arr = { 0, 0, 1, 3, 5, 7, 9, 11, 15, 0, 1, 6, 8, 10, 20, 25, 36, 34 };
        int count = arr.Length;
        Console.Write("Byte Array... ");
        for (int i = 0; i < count; i++) {
            Console.Write("\n"+arr[i]);
        }
        Console.WriteLine("\n\nByte Array (String representation) = {0} ",BitConverter.ToString(arr));
        for (int i = 1; i < arr.Length - 7; i = i + 8) {
            ulong res = BitConverter.ToUInt64(arr, i);
            Console.WriteLine("\nValue = "+arr[i]);
            Console.WriteLine("Result = "+res);
        }
    }
}

出力結果

Byte Array...
0
0
1
3
5
7
9
11
15
0
1
6
8
10
20
25
36
34
Byte Array (String representation) = 00-00-01-03-05-07-09-0B-0F-00-01-06-08-0A-14-19-24-22
Value = 0
Result = 1083970061066240256
Value = 0
Result = 2601132293100011776

使用時の注意点

begnIndexで指定した位置から配列の末尾までのバイト数が8バイト未満の場合、ArgumentExceptionがスローされます。また、引数の配列がnullの場合にはArgumentNullExceptionが発生します。そのため、メソッドを呼び出す前に配列の長さと開始インデックスを確認しておくことが重要です。

  1. C#のArray.BinarySearchメソッドの使い方 – 配列要素の位置を検索する

    C#のArray.BinarySearchメソッドを使用すると、配列内の要素がどの位置(インデックス)にあるかを検索できます。このメソッドは二分探索(バイナリサーチ)アルゴリズムを採用しているため、大量のデータを扱う場合でも高速に処理できるのが特徴です。 Array.BinarySearchメソッドの基本的な使い方 まず、検索対象となる文字列配列を設定します。 string[] str = { a, m, i, t }; 次に、Array.BinarySearchメソッドを使って、文字「t」の位置を取得します。 Array.BinarySearch(str, t); サンプルコード 以下に

  2. C#のClone()メソッドで配列を複製する方法

    C#のClone()メソッドとはC#におけるClone()メソッドは、配列の複製(コピー)を作成するためのメソッドです。元の配列と同じ要素を持つ新しい配列を簡単に生成できます。なお、Clone()メソッドの戻り値はobject型であるため、通常はas演算子や明示的なキャストを使って、目的の配列型に変換して受け取ります。また、このメソッドによるコピーは「浅いコピー(シャローコピー)」である点にも注意しましょう。配列自体は新しく作られますが、参照型の要素は元の配列と同じオブジェクトを共有します。Clone()メソッドで配列を複製するサンプルコード以下は、Clone()メソッドを使って文字列配列を複