HOWTO · Csharp
C# Int를 Char로 변환
이 자습서에서는 C#에서 int를 char로 캐스트하는 방법을 설명합니다.
이 페이지의 내용
C#에서는 정수가 무엇을 나타내는지에 따라 변환을 선택합니다. char 범위 안의 값을 캐스트하거나, 검사되는 변환에는 Convert.ToChar()를 사용하거나, 유니코드 코드 포인트에는 Char.ConvertFromUtf32()를 사용하거나, 음수가 아닌 정수의 첫 번째 십진 숫자를 읽으려면 ToString()[0]를 사용합니다. 이러한 연산은 서로 다른 결과를 반환하므로, 숫자 추출은 일반적인 정수-문자 변환이 아닙니다. 아래 예제는 여기에서 실행되지 않으며, 각 연산을 보여주기 위해 코드가 제공됩니다.
C# char는 하나의 UTF-16 코드 단위를 저장합니다. 0부터 65535까지의 값을 보유할 수 있지만, 일부 유니코드 문자에는 두 개의 코드 단위가 필요합니다. 입력이 하나의 char에 들어가도록 의도된 값이 아니라 유니코드 코드 포인트인 경우, 문자열을 반환하는 메서드를 사용하세요.
명시적 캐스트로 C#에서 int를 char로 캐스트하기
명시적 캐스트는 정수 값을 char로 변환합니다. 102와 같은 값의 경우, 대응하는 UTF-16 코드 단위는 f를 나타냅니다. char는 하나의 UTF-16 코드 단위이므로, 이 캐스트는 모든 유니코드 코드 포인트를 완전한 문자로 바꾸지 않습니다. 보충 코드 포인트에는 두 개의 코드 단위가 필요하며 하나의 char에 들어갈 수 없습니다. 검사되는 컨텍스트에서는 범위를 벗어난 숫자 변환이 검사되고, 검사되지 않는 컨텍스트에서는 변환이 하위 16비트를 유지합니다. 직접적인 대응을 원할 때는 입력을 char 범위 안에 유지하세요.
using System;
public class Program
{
public static void Main()
{
int value = 102;
char character = (char)value;
Console.WriteLine($"(char){value} is {character}");
}
}
Convert.ToChar()로 C#에서 int를 char로 변환하기
Convert.ToChar()는 char 범위 안, 즉 0부터 65535까지의 정수를 char로 변환합니다. 그 범위를 벗어난 int에 대해서는 OverflowException을 던집니다. 명시적 캐스트에 의존하는 대신 범위를 검사하고 싶을 때 이 메서드를 선택하세요. 반환되는 값은 여전히 단일 UTF-16 코드 단위이며, 모든 유니코드 코드 포인트에 대한 완전한 표현은 아닙니다.
using System;
public class Program
{
public static void Main()
{
int value = 65;
char character = Convert.ToChar(value);
Console.WriteLine($"Convert.ToChar({value}) is {character}");
}
}
Char.ConvertFromUtf32()로 C#에서 유니코드 코드 포인트 변환하기
정수가 유니코드 코드 포인트를 나타낼 때, Char.ConvertFromUtf32()는 그 UTF-16 표현을 포함하는 문자열을 반환합니다. 유효한 유니코드 스칼라 값을 허용합니다. 서로게이트 범위 안의 값과 U+10FFFF를 초과하는 값은 유효한 입력이 아닙니다. 보충 범위의 코드 포인트는 두 개의 char 값으로 표현되므로, 반환되는 문자열(그 첫 번째 요소만이 아님)이 완전한 문자 표현입니다. 정수가 유니코드 코드 포인트를 식별하고 그 텍스트 표현이 필요한 경우에 적합한 선택입니다.
using System;
public class Program
{
public static void Main()
{
int codePoint = 0x1F600;
string character = Char.ConvertFromUtf32(codePoint);
Console.WriteLine(character);
}
}
ToString()으로 C#에서 int의 첫 번째 십진 숫자 가져오기
value.ToString()[0]는 정수의 십진 텍스트에서 첫 번째 문자를 가져옵니다. 숫자 값을 그 값이 나타내는 문자로 변환하지는 않습니다. 80과 같은 음수가 아닌 값의 경우, 그 문자는 숫자 8입니다. 음수 값의 경우 첫 번째 문자는 부호이므로, 이 식은 숫자를 반환하지 않습니다. 알려진 음수가 아닌 정수에 대해 쓰인 첫 번째 숫자를 검사하는 것이 목표일 때만 사용하세요. 모든 숫자를 처리해야 한다면 값을 문자열로 유지하거나 그 작업에 적합한 숫자 연산을 사용하세요.
using System;
public class Program
{
public static void Main()
{
int value = 80;
char firstCharacter = value.ToString()[0];
Console.WriteLine($"value.ToString()[0] is {firstCharacter}");
}
}
C#에서 올바른 int-char 변환 선택하기
- 정수가 하나의
char코드 단위에 직접 대응하도록 의도된 값일 때는 명시적 캐스트를 사용하세요. - 값을
char범위에 대해 검사해야 할 때는Convert.ToChar()를 사용하세요. - 정수가 유효한 유니코드 코드 포인트이고 결과에 여러 UTF-16 코드 단위가 필요할 수 있을 때는
Char.ConvertFromUtf32()를 사용하고, 반환되는 문자열을 그대로 유지하세요. ToString()[0]는 음수가 아닌 정수에서 첫 번째 십진 숫자 문자를 얻을 때만 사용하세요.
이 메서드들은 서로 다른 작업을 해결합니다. 캐스트와 Convert.ToChar()는 하나의 char를 반환하고, Char.ConvertFromUtf32()는 유니코드 코드 포인트에 대한 문자열을 반환하며, ToString()[0]는 서식이 지정된 십진 텍스트에서 문자를 읽습니다.