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 정수로 재해석한 결과를 반환합니다. 부동 소수점 수의 비트 구조를 확인하거나, 데이터를 안전하게 전송·저장해야 할 때 유용하게 사용할 수 있습니다.