본문으로 바로가기

1.  문자형 숫자 정수형 캐스팅

개발을 하다 보면 의도치 않게 char 형태의 숫자를 int로 변환하여 데이터를 연산 처리하거나

혹은 String 형태의 숫자를 char[] 형태로 변환한 후 각각의 숫자를 한 자리씩 int로 변환하여 데이터 처리를 하는 경우가 있습니다.

 

이럴 경우 매우 조심해야 해야합니다.

캐스팅 방법에 따라서

char 형태의 숫자를 int로 변환하는 과정에서 ASCII으로 변환되어 의도치 않은 데이터 연산 처리 결과를 받을 수 있습니다.

따라서 문자형(char)에서 정수형(int)으로 캐스팅할 경우 주의해서 사용해야 합니다. 

 

ASCII

 

2.  char to int (ASCII 코드)

  • (int)를 이용해 캐스팅할 경우 아스키코드로 결과를 받게 됩니다. 
char charNumberZero = '0';
char charNumberOne = '1';

int intZero = (int)charNumberZero;
int intOne = (int)charNumberOne;

System.out.println(intZero); // 48
System.out.println(intOne); // 49

 

3. char to int (연산 활용)

  • 0의 ASCII 코드 값(48)을 빼는 연산을 활용하여 숫자 그대로 변환합니다.
char charNumberZero = '0';
char charNumberOne = '1';

int intZero = charNumberZero - '0'; // 48 - 48 = 0
int intOne = charNumberOne - '0'; // 49 - 48 = 1

System.out.println(intZero); // 0
System.out.println(intOne); // 1

 

4. char to int ( Character.getNumericValue() )

  • Character.getNumericValue() 정적 메서드를 활용하면 숫자 그대로 변환할 수 있습니다.
char charNumberZero = '0';
char charNumberOne = '1';

int intZero = Character.getNumericValue(charNumberZero);
int intOne = Character.getNumericValue(charNumberOne);

System.out.println(intZero); // 0
System.out.println(intOne); // 1