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

C# BitConverter 클래스 완벽 정리 – 기본 타입과 바이트 배열 변환 방법

BitConverter 클래스란?

C#의 BitConverter 클래스는 int, double, bool 같은 기본 데이터 형식을 바이트 배열로 변환하거나, 그 반대로 바이트 배열을 기본 데이터 형식으로 되돌리는 정적 메서드 모음입니다. 네트워크 통신, 파일 입출력, 직렬화 등 데이터를 바이트 단위로 다루어야 하는 상황에서 특히 유용하게 활용됩니다.

BitConverter 클래스의 주요 메서드는 다음과 같습니다.

메서드설명
DoubleToInt64Bits(Double)지정된 배정밀도 부동 소수점 숫자를 64비트 부호 있는 정수로 변환합니다.
GetBytes(Boolean)지정된 Boolean 값을 바이트 배열로 반환합니다.
GetBytes(Char)지정된 유니코드 문자 값을 바이트 배열로 반환합니다.
GetBytes(Double)지정된 배정밀도 부동 소수점 값을 바이트 배열로 반환합니다.
GetBytes(Int16)지정된 16비트 부호 있는 정수 값을 바이트 배열로 반환합니다.
GetBytes(Int32)지정된 32비트 부호 있는 정수 값을 바이트 배열로 반환합니다.
Int64BitsToDouble(Int64)지정된 64비트 부호 있는 정수를 배정밀도 부동 소수점 숫자로 재해석하여 반환합니다.
ToBoolean(Byte[], Int32)바이트 배열에서 지정된 위치의 바이트를 Boolean 값으로 변환하여 반환합니다.
ToChar(Byte[], Int32)바이트 배열에서 지정된 위치의 두 바이트를 유니코드 문자로 변환하여 반환합니다.
ToString(Byte[])지정된 바이트 배열의 각 요소 숫자 값을 해당하는 16진수 문자열 표현으로 변환합니다.
ToString(Byte[], Int32)지정된 시작 인덱스부터 끝까지의 바이트 하위 배열을 16진수 문자열 표현으로 변환합니다.
ToString(Byte[], Int32, Int32)지정된 시작 인덱스부터 지정된 길이만큼의 바이트 하위 배열을 16진수 문자열 표현으로 변환합니다.
ToUInt16(Byte[], Int32)바이트 배열에서 지정된 위치의 두 바이트를 16비트 부호 없는 정수로 변환하여 반환합니다.

이제 실제 예제를 통해 주요 메서드의 사용법을 살펴보겠습니다.

1. BitConverter.ToBoolean() 메서드

BitConverter.ToBoolean() 메서드는 바이트 배열에서 지정된 위치의 바이트를 읽어 Boolean 값으로 변환해 반환합니다.

문법

public static bool ToBoolean (byte[] arr, int startIndex);

여기서 arr은 대상 바이트 배열이며, startIndex는 값을 읽어올 바이트의 인덱스입니다.

예제 코드

using System;
public class Demo {
    public static void Main(){
        byte[] arr = { 50, 100 };
        Console.WriteLine("Array values...");
        for (int i = 0; i < arr.Length; i++) {
            Console.WriteLine("{0} ", arr[i]);
        }
        Console.WriteLine("\nConverted values...");
        for (int index = 0; index < arr.Length; index++) {
            bool res = BitConverter.ToBoolean(arr, index);
            Console.WriteLine(""+res);
        }
    }
}

실행 결과

Array values...
50
100
Converted values...
True
True

0이 아닌 모든 바이트 값은 true로 변환됩니다. 위 예제에서 50과 100은 모두 0이 아니므로 True가 출력된 것을 확인할 수 있습니다.

2. BitConverter.DoubleToInt64Bits() 메서드

BitConverter.DoubleToInt64Bits() 메서드는 지정된 배정밀도(double) 부동 소수점 숫자를 64비트 부호 있는 정수(long)로 변환합니다.

문법

public static long DoubleToInt64Bits (double val);

여기서 val은 변환할 숫자입니다.

예제 코드

using System;
public class Demo {
    public static void Main(){
        double d = 5.646587687;
        Console.Write("Value = "+d);
        long res = BitConverter.DoubleToInt64Bits(d);
        Console.Write("\n64-bit signed integer = "+res);
    }
}

실행 결과

Value = 5.646587687
64-bit signed integer = 4618043510978159912

이 메서드는 double 값의 내부 비트 패턴을 그대로 long 정수로 재해석한 결과를 반환합니다. 부동 소수점 수의 비트 구조를 확인하거나, 데이터를 안전하게 전송·저장해야 할 때 유용하게 사용할 수 있습니다.