int val = 233;
byte b = (byte) val;
System.out.println(b);
나는 간단한 값을 가지고있다. 나는 하나의 정수에 어떤 값을 가지고있다. & 출력을 위해 그 값을 바이트로 변환하고 싶다. 그러나이 경우에 부정적인 가치가 올 것입니다.int를 java에 바이트로 할당 하시겠습니까?
int 값을 바이트 유형에 성공적으로 배치하려면 어떻게해야합니까?
int val = 233;
byte b = (byte) val;
System.out.println(b);
나는 간단한 값을 가지고있다. 나는 하나의 정수에 어떤 값을 가지고있다. & 출력을 위해 그 값을 바이트로 변환하고 싶다. 그러나이 경우에 부정적인 가치가 올 것입니다.int를 java에 바이트로 할당 하시겠습니까?
int 값을 바이트 유형에 성공적으로 배치하려면 어떻게해야합니까?
자바의 byte
그 범위 부호있는 8 비트 숫자 유형이 -128
127
(JLS 4.2.1)에. 233
이이 범위를 벗어납니다. 동일한 비트 패턴이 대신 -23
을 나타냅니다. 만약 byteVariable = (byte) intVariable
이를 수행 한 다음, 바이트 내의 int
의 제 8 비트를 저장하기에 고집
11101001 = 1 + 8 + 32 + 64 + 128 = 233 (int)
1 + 8 + 32 + 64 - 128 = -23 (byte)
는 말했다. 이 값을
int
으로 다시 입력해야하는 경우 가능한 모든 부호 확장 (즉,
intVariable = byteVariable & 0xFF;
)을 마스크해야합니다.
바이트 부호없는 값이 필요한 경우 b&0xFF
.
한 바이트에 256 개의 값을 사용할 수 있습니다. 기본 범위는 -128에서 127이지만, 임의의 256 값을 약간의 변환으로 나타낼 수 있습니다. 귀하의 경우에는 비트를 마스킹 제안을 따르십시오.
int val =233;
byte b = (byte)val;
System.out.println(b & 0xFF); // prints 233.
바이트는 본질적으로 서명되므로 -128에서 127 범위의 값을 저장할 수 있습니다. 타입 캐스팅 후에 정의 된 범위보다 더 큰 값을 저장할 수는 있지만 정의 된 범위의 순환은 다음과 같이 발생합니다. cycling nature of range
불행히도 Java의 바이트는 서명됩니다. 더 큰 데이터 유형이나 사용자 정의 클래스를 사용해보십시오. – missingfaktor
@ user303218 : val 값의 범위는 무엇입니까? 0-255? – Roman
@Rahul, 왜 서명 된 바이트가 "불행"합니까? –