C# Int를 Char로 변환하기

 

Int형에 담긴 자연수 0~9 사이의 숫자 n이 주어졌을 때, Char로 변환하려고 한다.

 

#. 잘못된 예시 : 바로 캐스팅하면 안된다

int n = 3;
char myChar = (char)n;

정수를 (char)로 바로 캐스팅하면 ascii 코드의 인덱스를 기준으로 컨버팅 된다.

참고로 ASCII 코드는 숫자 48 ~, 소문자 65~ 대문자 97~ 부터 시작한다.

 

 

#. char 형은 Int 형과 연산이 가능하다

char는 ASCII 코드 값을 기준으로 int형으로 변환된다!

이 특성을 활용하면 다음과 같은 연산도 가능하다.

char x = '9'; // '9' = ASCII 57
int b = x - '0'; //That is '9' - '0' = 57 - 48 = 9

 

즉 원래 원했던 n을 그대로 char 형으로 변환하고 싶다면 다음과 같은 코드를 써주면 된다.

int n = 3;
char myChar = (char)(n + '0');

숫자 0에 해당하는 char랑 int형 n을 더하면 char형이 ASCII코드에 해당하면 int 값으로 암시적 캐스팅 된다.

숫자 0에 해당하는 ASCII코드 값에 n만큼 숫자가 더해지니, 계산값은 숫자n에 해당하는 ASCII코드를 나타는 int 값이다. 이를 다시 char로 변환하면 숫자를 나타내는 char가 된다.

 

Convert.ToChar를 활용하는 방법도 있는데, 바로 변환은 불가능하고 ToString()을 거쳐야한다.

int n = 3;
char myChar = Convert.ToChar(n.ToString());

 

 

#. 사용 예시 : 숫자 int -> char  

이를 사용하는 심화 예시로는 자연수 num에 있는 숫자 n의 index 구하기.

자연수 num을 char[]로 변환한 다음, Array.IndexOf를 통해 위치 값을 구해야한다.

int n = 3;
char[] charArray = num.ToString().ToCharArray();
int answer = Array.IndexOf(charArray, (char)(n + '0'));

이때 탐색해야 되는 숫자가 int로 주어진 경우 char 형으로 변환하기 위해 사용될 수 있다.

 

 

#. 반대의 경우 char -> int

반대로 변환해야하는 경우도 있다.

이 경우 char형에 준비된 메서드가 존재한다.

Char.GetNumericValue('8'); // double형 8을 반환한다.
(int)Char.GetNumericValue('8'); // int로 캐스팅 해주면 된다.

 

MSDN : Char.GetNumericValue 메서드
https://learn.microsoft.com/ko-kr/dotnet/api/system.char.getnumericvalue?view=net-7.0

 

 

 

 

댓글

Designed by JB FACTORY