2011-09-20 6 views
2

는 다음과 같은 코드가 작동하지 않습니다char에서 int로 타입 변환 할 수없는 이유는 무엇입니까? 어떤 이유

char cValue = '8'; 
int digits = (int)cValue; 

그것은 5 또는 7, 또는 그 라인을 따라 뭔가 어떤 값을주고 유지합니다.

저는 왜 궁금 해서요 - 대신 Character.getNumericValue(cValue);을 사용하고 있습니다.

왜 이런 일이 발생합니까?

+4

실제로 문자 '8'의 ASCII 값인 56이라는 값을 얻고 있습니까? –

+0

'char cValue = 8;'이라고 말할 수 있습니다. 그런 다음 캐스트가 예상대로 성공해야합니다. –

+0

@GregHewgill, 그건 의미가 있습니다. 고맙습니다 – Cody

답변

6

int 형 변환 문자, 실제로는 있습니다. 문자 '8'의 2 진 표현은 실제로 56 (십진수)입니다. 전환에 대해서는 any ASCII chart을 참조하십시오. 당신이 찾고있는 것은 파싱이 아니라 주조하는 것입니다. getNumericValue()은 char을 구문 분석하고 해당 숫자를 제공합니다. char를 캐스팅하면 단순히 유형이 변경되고 비트 패턴은 동일하게 유지됩니다. 비트는 연관된 변수의 유형에 따라 해석됩니다.

3

Java char은 부호없는 16 비트 값입니다. 하나를 int로 변환하면 문자의 유니 코드 값을 얻습니다. 문자 '8'은 십진수 56의 유니 코드 값을 갖습니다.

getNumericValue는 완전히 다릅니다. 숫자 의미가있는 문자 인 경우 문자를 의미합니다.

관련 문제