C#のBitConverter.ToInt32()メソッドの使い方を徹底解説
C#のBitConverter.ToInt32()メソッドは、バイト配列内の指定された位置から4バイトを読み取り、それを32ビット符号付き整数(int型)に変換して返すメソッドです。ネットワーク通信やファイル入出力などでバイト列を数値として扱いたい場面でよく使用されます。
構文
BitConverter.ToInt32()メソッドの構文は以下の通りです。
public static int ToInt32 (byte[] val, int begnIndex);
パラメータ
- val: 変換元となるバイト配列
- begnIndex: 変換を開始する配列内の位置(インデックス)
このメソッドは、begnIndexで指定された位置から4バイト分のデータをリトルエンディアン形式として解釈し、int型の値を返します。
スローされる可能性のある例外
- ArgumentNullException: valがnullの場合
- ArgumentOutOfRangeException: begnIndexが配列の有効範囲外の場合
- ArgumentException: begnIndex以降に4バイト分のデータが存在しない場合
サンプルコード1
まずは基本的な使用例を見てみましょう。
using System;
public class Demo {
public static void Main(){
byte[] arr = { 10, 20, 30, 40, 50};
Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 3; i = i + 4) {
int res = BitConverter.ToInt32(arr, i);
Console.WriteLine("\nValue = "+arr[i]);
Console.WriteLine("Result = "+res);
}
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Byte Array = 0A-14-1E-28-32 Value = 20 Result = 841489940
この例では、インデックス1(値20)から4バイト分(20, 30, 40, 50)を読み取り、1つの32ビット符号付き整数「841489940」に変換しています。
サンプルコード2
続いて、別の例を見てみましょう。
using System;
public class Demo {
public static void Main(){
byte[] arr = { 0, 0, 10, 15, 20, 26, 32, 34, 40};
Console.WriteLine("Byte Array = {0} ", BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 3; i = i + 4) {
int res = BitConverter.ToInt32(arr, i);
Console.WriteLine("\nValue = "+arr[i]);
Console.WriteLine("Result = "+res);
}
}
}実行結果
上記のコードを実行すると、次のような出力が得られます。
Byte Array = 00-00-0A-0F-14-1A-20-22-28 Value = 0 Result = 336529920 Value = 26 Result = 673325082
この例では、ループ処理によってインデックス1と5の2か所からそれぞれ4バイトずつ読み込み、個別のint型の値に変換していることがわかります。このようにBitConverter.ToInt32()を使えば、バイト配列の任意の位置にあるデータを簡単に数値へ変換できます。
-
【C#】Convert.ToInt32メソッドで値を32ビット符号付き整数に変換する方法
Convert.ToInt32メソッドとはC#のConvert.ToInt32()メソッドは、指定した値を32ビット符号付き整数(int型)に変換するためのメソッドです。double型やstring型など、さまざまな型の値をint型へ変換できます。なお、Convert.ToInt32は「銀行家丸め(バンカーズ・ラウンディング)」と呼ばれる丸め方式を採用しています。値がちょうど中間(例:11.5)の場合は最も近い偶数に丸められ、それ以外の場合は一般的な四捨五入と同じ動作になります。double型の値を変換する手順まず、double型の変数を用意します。double doubleNum = 11.
-
C#のSequenceEqualメソッドの使い方を徹底解説!コレクションの等価性を判定する方法
C#のSequenceEqualメソッドは、2つのコレクションが等しいかどうかを判定するために使用されるLINQのメソッドです。要素の数だけでなく、順序も含めて各要素が一致しているかどうかを比較し、結果をbool型(true / false)で返します。このメソッドを使用するには、System.Linq名前空間が必要です。配列やリストなど、IEnumerableインターフェースを実装するあらゆるコレクションに対して利用できます。サンプルデータの準備まず、3つの文字列配列を用意してみましょう。string[] arr1 = { This, is, it }; string[] arr2 = {