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

C#のBitConverter.ToUInt32()メソッドの使い方を徹底解説

C#のBitConverter.ToUInt32()メソッドは、バイト配列内の指定した位置から4バイトを読み込み、それを32ビット符号なし整数(uint)に変換して返す静的メソッドです。バイナリデータの解析やネットワーク通信など、バイト単位でデータを扱う場面でよく使用されます。

構文

public static uint ToUInt32 (byte[] val, int begnIndex);

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

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

スローされる例外

  • ArgumentNullException:valがnullの場合に発生します
  • ArgumentException:begnIndex以降に4バイト分のデータが存在しない場合に発生します

サンプルコード1

using System;
public class Demo {
    public static void Main() {
        byte[] arr = { 0, 3, 5, 10, 15, 2};
        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 - 1; i = i + 4) {
            uint res = BitConverter.ToUInt32(arr, i);
            Console.WriteLine("\nValue = "+arr[i]);
            Console.WriteLine("Result = "+res);
        }
    }
}

実行結果

Byte Array...
0
3
5
10
15
2
Byte Array (String representation) = 00-03-05-0A-0F-02
Value = 3
Result = 252314883

サンプルコード2

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 - 1; i = i + 4) {
            uint res = BitConverter.ToUInt32(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 = 84082944
Value = 7
Result = 252381447

動作のポイント

BitConverter.ToUInt32()メソッドは、多くの環境で採用されているリトルエンディアン(下位バイトから順に格納される方式)としてバイト列を解釈します。たとえばサンプルコード1では、インデックス1以降の4バイト「03-05-0A-0F」が読み込まれ、次のように計算されます。

  • 3 × 1 = 3
  • 5 × 256 = 1,280
  • 10 × 65,536 = 655,360
  • 15 × 16,777,216 = 251,658,240

これらを合計した値「252,314,883」が結果として返されます。また、ループ処理で変換を行う場合は、開始位置から4バイト分が配列の範囲内に収まっているかを必ず確認してください。範囲外を指定するとArgumentExceptionが発生します。

  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()メソッドを使って文字列配列を複