문자를 byte
으로 변환 한 다음 char
으로 다시 변환하면 해당 문자가 신비하게 사라져서 다른 것으로 변합니다. 이것이 어떻게 가능한지? 이 모든 것이 괜찮Java에서 바이트 및 문자 변환
char a = 'È'; // line 1
byte b = (byte)a; // line 2
char c = (char)b; // line 3
System.out.println((char)c + " " + (int)c);
라인까지 :
이
코드입니다 는라인 1에서 나는 "A"콘솔에 인쇄 할 수 있으며 "E"가 표시됩니다.
2 행에서 "b"를 콘솔에 인쇄 할 수 있으며 -56, 즉 바이트가 서명되어 있기 때문에 200이 표시됩니다. 그리고 200은 "È"입니다. 그래도 괜찮습니다.
3 번 줄에는 무엇이 잘못 되었습니까? "c"는 다른 것이되고 프로그램은 ? 65480
을 인쇄합니다. 그것은 완전히 다른 것입니다.
올바른 결과를 얻으려면 3 행에 무엇을 써야합니까?
'바이트'는 '8 비트'입니다.'char'는'16 비트'입니다. 아이디어 있니? –
char가 2 바이트를 차지합니다. – Ankit
@RohitJain 그리고 유니 코드 코드 포인트를 의미하는 문자는 2 개의 문자 또는 4 바이트를 취할 수 있습니다. 게다가, 어떤 정규화 형태가 존재하는지 누가 알 수 있습니까? 문자열 ""은 자체가 정규화 형식 C인지 D인지에 따라 각각 하나 또는 두 개의 코드 포인트로 구성 될 수 있습니다. – tchrist