String을 int형으로 바꾸는 방법은 간단하다.
int.Parse(string s) 를 사용해주면 끝!!
하지만 아래와 같은 char 형을 int형으로 바꿔주려고 캐스팅을 하게되면
char a = '3'
print( (int)a )
의도와는 다르게 결과값으로 3 대신 51이란 숫자를 보게될것이다.
이유가 뭘까?
위 그림은 아스키 코드표의 일부분을 캡쳐한 것인데, 각 문자를 int형으로 바꾸게 되면 왼편의 파란 원에 있는 숫자들로 바뀌어 출력되게 된다.
기본적으론 그 중에서도 가장 왼쪽줄에 있는 십진수의 형식으로 출력될 것이다.
이 문제를 해결하는 방법들 중 두 가지를 소개하겠다.
1. int.Parse를 사용하는 방법.
이 방법을 사용하면 간단하지만,
int.Parse는 인자로 string 형태의 값만을 받는것이 문제이다.
이 문제를 극복하기 위해 char.ToString()을 해서 사용해주면 된다.
print(int.Parse(a.ToString()))
2. '0'을 빼주는 방법.
ascii코드표를 참고하면 이해가 쉬운 방법이다.
https://ardmos.tistory.com/entry/%EC%95%84%EC%8A%A4%ED%82%A4%EC%BD%94%EB%93%9C%ED%91%9C
아스키 코드표를 보면 문자
0은 십진수로 48,
1은 49,
2는 50,
3은 51,
4는 52...
이런 식인걸 알 수 있다.
바로 이것을 활용하는 방법인데
char a = '3'
char b = '0'
이렇게 두 변수가 존재할 경우에
print(a - b)
위처럼 연산해주게 되면 두 char 변수는 계산될 때 int형으로 변환되어 계산되게 된다.
연산이 3-0이 아닌, 51-48로써 이루어지게되는 것. (아스키 코드표 참고)
결과적으로 -'0'을 해줌으로써 a-b는 우리가 원하는 변수 a의 값인 3을 int형으로 얻을 수 있다.
print(a-'0')