"byte FOO = 0xFE;"
java에서 작동하지 않습니다.왜 자바에서 16 진수를 바이트로 변환하는 것이 효과가 없습니까?
"Cannot convert from into to byte"
하지만 C++에서 작동합니다. 어떻게 해결할 수 있습니까?
"byte FOO = 0xFE;"
java에서 작동하지 않습니다.왜 자바에서 16 진수를 바이트로 변환하는 것이 효과가 없습니까?
"Cannot convert from into to byte"
하지만 C++에서 작동합니다. 어떻게 해결할 수 있습니까?
어느 : 값이 바이트 범위의 사이에 들어가 16 진수를 사용하여
long FOO = 0xFE; //Use long as type
또는
byte FOO = (byte)0xFE; //Typecast to byte.
는 컴파일러 [-128, 127]을 확인한다.
0xFE
은
127
보다 크기 때문에
byte
의 범위를 벗어 났으므로
int
또는
long
을 사용해야합니다.
귀하의 예는 Narrowing conversion입니다.
값 0xFE
은 에 해당하며 바이트 범위에 있지 않으므로 바이트로 저장하려고하면 암시 적 typecasting이 수행되지 않습니다. 바이트로 수용하려면 RHS 값이 [-128 to 127]
범위에 있어야합니다.
또는, explicit typecasting
으로,이를 저장하기 위해 명시 적으로 컴파일러를 알 수 있습니다 :
byte FOO = (byte)0xFE;
을하지만, 당신이 다음 명시 적으로 타입 캐스팅이 필요하지 않을 것입니다 byte
의 범위에 들어갈 수있는 값을 저장하는 경우.
byte FOO = 0x20; // OK, can accommodate in byte.
유형 변환에 대한 자세한 내용은 JLS - Section # 5.1을 참조하십시오. 구체적 JLS
에서 문을 인용하면 Assignment Conversion
설명
그리고 JLS - Section # 5.2 - 변수의 타입 바이트 짧거나 문자이면
좁아 기본 변환 가 사용될 수있다 변수 표현식의 값은 변수의 유형으로 나타낼 수 있습니다.
Java에서 프로그래밍을 C++처럼 멈추는 것이 좋습니다. 이것이 C++로 컴파일 된 사실은 당신의 아이디어를 자바로 옮기는 것과는 무관합니다. – GManNickG