C#의 BitConverter.ToChar() 메서드는 바이트 배열 내 지정된 위치에서 연속된 두 바이트를 읽어 하나의 유니코드 문자(char)로 변환한 후 반환하는 기능을 수행합니다. 이 메서드는 주로 이진 데이터(binary data)를 다룰 때 특정 위치의 바이트 쌍을 문자 형태로 확인해야 하는 경우에 유용하게 활용됩니다.
구문 (Syntax)
public static char ToChar (byte[] value, int startIndex);
위 구문에서 value는 대상이 되는 바이트 배열을 의미하고, startIndex는 변환을 시작할 배열 내 위치(인덱스)를 나타냅니다.
동작 방식
BitConverter.ToChar()는 시작 인덱스부터 두 개의 바이트를 읽어 들인 뒤, 리틀 엔디안(little-endian) 방식으로 조합하여 하나의 16비트 유니코드 문자를 생성합니다. 예를 들어 인덱스 i가 시작점이라면 arr[i]가 하위 바이트, arr[i+1]이 상위 바이트로 처리됩니다.
예제 1
using System;
public class Demo {
public static void Main() {
byte[] arr = { 0, 20, 50, 65 };
Console.WriteLine("Array = {0} ",
BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 1; i = i + 2) {
char values = BitConverter.ToChar(arr, i);
Console.WriteLine("Value = "+arr[i]);
Console.WriteLine("Result = "+values);
}
}
}출력 결과
Array = 00-14-32-41 Value = 20 Result = ㈔
위 예제에서는 반복문이 인덱스 1부터 시작하여 2씩 증가하면서 각 위치에서 두 바이트씩 묶어 문자로 변환합니다. 배열 { 0, 20, 50, 65 }에서 인덱스 1과 2의 바이트(20, 50)가 결합되어 유니코드 문자 '㈔'가 출력됩니다.
예제 2
using System;
public class Demo {
public static void Main() {
byte[] arr = { 50, 13, 23, 18, 160 };
Console.WriteLine("Array = {0} ",
BitConverter.ToString(arr));
for (int i = 1; i < arr.Length - 1; i = i + 2) {
char values = BitConverter.ToChar(arr, i);
Console.WriteLine("Value = "+arr[i]);
Console.WriteLine("Result = "+values);
}
}
}출력 결과
Array = 32-0D-17-12-A0 Value = 13 Result = ᜍ Value = 18 Result = ꀒ
참고 사항
시작 인덱스가 배열 범위를 벗어나거나, 해당 위치에서 두 바이트를 읽을 수 없는 경우에는 ArgumentOutOfRangeException 또는 ArgumentException이 발생할 수 있으므로, 호출 전에 배열의 길이와 인덱스 유효성을 반드시 확인해야 합니다.