Computer >> 컴퓨터 >  >> 프로그래밍 >> C#

C# BitConverter.ToInt32() 메서드 – 바이트 배열을 32비트 정수로 변환하기


C#의 BitConverter.ToInt32() 메서드는 바이트 배열에서 지정된 위치부터 연속된 4바이트를 읽어 들여, 이를 32비트 부호 있는 정수(int)로 변환한 값을 반환합니다. 네트워크 통신, 파일 입출력 등 바이트 단위의 원시 데이터를 다룰 때 매우 유용하게 활용됩니다.

구문

메서드의 기본 구문은 다음과 같습니다.

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

각 매개변수의 의미는 다음과 같습니다.

  • val – 변환 대상이 되는 바이트 배열입니다.
  • begnIndex – 배열 val 내에서 변환을 시작할 위치(인덱스)입니다.

이 메서드는 지정된 인덱스부터 4개의 바이트를 리틀 엔디안(little-endian) 방식으로 해석하여 하나의 정수 값을 만듭니다. 참고로 배열이 null이면 ArgumentNullException이, 배열 길이가 begnIndex + 4보다 작으면 ArgumentOutOfRangeException이 발생하므로 인덱스 범위에 주의해야 합니다.

예제 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부터 시작하는 4바이트(20, 30, 40, 50)가 하나의 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에서 각각 4바이트씩 읽어 서로 다른 두 개의 정수 값으로 변환한 것을 볼 수 있습니다. 이처럼 BitConverter.ToInt32() 메서드를 활용하면 바이트 배열의 원하는 위치에서 손쉽게 정수 데이터를 추출할 수 있습니다.