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

C# Char.ConvertToUtf32(String, Int32) 메서드 완벽 정리

C#의 Char.ConvertToUtf32(String, Int32) 메서드는 문자열 내에서 지정된 위치에 있는 UTF-16으로 인코딩된 단일 문자 또는 서러게이트 쌍(surrogate pair)의 값을 유니코드 코드 포인트로 변환하는 데 사용됩니다.

이 메서드를 활용하면 UTF-16 기반의 .NET 문자열에서 실제 유니코드 코드 포인트(정수 값)를 손쉽게 얻을 수 있어, 이모지나 보조 문자plane 같은 확장 유니코드 문자를 다룰 때 특히 유용합니다.

구문

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

public static int ConvertToUtf32 (string str, int index);

매개변수 설명

  • str: 변환할 문자 또는 서러게이트 쌍이 포함된 문자열입니다.
  • index: str 내에서 변환 대상인 문자 또는 서러게이트 쌍의 인덱스 위치입니다.

반환값은 해당 위치의 문자 또는 서러게이트 쌍에 해당하는 유니코드 코드 포인트(int)입니다.

예제 1: 기본 사용법

다음은 Char.ConvertToUtf32(String, Int32) 메서드를 구현한 첫 번째 예제입니다.

using System;
public class Demo {
    public static void Main(){
        int utf = 0x046;
        string str = Char.ConvertFromUtf32(utf);
        Console.WriteLine("Final Value = " + str);
        int res = Char.ConvertToUtf32(str, 0);
        Console.WriteLine("Actual Value = 0x{0:X}", res);
    }
}

출력 결과

위 코드를 실행하면 다음과 같은 결과가 출력됩니다.

Final Value = F
Actual Value = 0x46

이 예제에서는 먼저 ConvertFromUtf32 메서드로 코드 포인트 0x46을 문자 'F'로 변환한 뒤, ConvertToUtf32 메서드를 사용해 다시 원래의 코드 포인트 0x46으로 되돌리는 과정을 보여줍니다.

예제 2: 다른 코드 포인트 적용

이번에는 다른 코드 포인트를 사용한 두 번째 예제입니다.

using System;
public class Demo {
    public static void Main(){
        int utf = 0x057;
        string str = Char.ConvertFromUtf32(utf);
        Console.WriteLine("Final Value = " + str);
        int res = Char.ConvertToUtf32(str, 0);
        Console.WriteLine("Actual Value = 0x{0:X}", res);
    }
}

출력 결과

실행 결과는 다음과 같습니다.

Final Value = W
Actual Value = 0x57

코드 포인트 0x57이 문자 'W'로 변환되었다가, 다시 ConvertToUtf32 메서드를 통해 원래 값인 0x57로 복원되는 것을 확인할 수 있습니다.

정리

Char.ConvertToUtf32(String, Int32) 메서드는 문자열의 특정 위치에 있는 UTF-16 문자나 서러게이트 쌍을 유니코드 코드 포인트로 변환해 주는 강력한 도구입니다. 특히 BMP(기본 다국어 평면)를 벗어난 문자를 처리할 때 서러게이트 쌍을 올바르게 해석할 수 있어, 국제화(i18n) 작업이나 유니코드 기반 텍스트 분석에 널리 활용됩니다.