ByteArrayOutputStream을 사용하여 바이트 배열을 채 웠습니다. 인쇄 할 때 출력이 혼란 스럽습니다. 나는 약간의 지침이 필요하다.bytearrayoutputstream에서 채워진 인쇄 바이트 배열
가[0, 0, 0, -106]
(
ByteArrayOutputStream을 사용하여 바이트 배열을 채 웠습니다. 인쇄 할 때 출력이 혼란 스럽습니다. 나는 약간의 지침이 필요하다.bytearrayoutputstream에서 채워진 인쇄 바이트 배열
가[0, 0, 0, -106]
(
150 바이트의 비트 -128의 관점에서 1001 0110 같음 도와주세요 여기
ByteArrayOutputStream bout = new ByteArrayOutputStream();
DataOutputStream out = new DataOutputStream(bout);
try {
out.writeInt(150);
byte[] b = bout.toByteArray();
System.out.println(Arrays.toString(b));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
내 출력된다 : 여기
내 코드 가장 왼쪽 비트) 플러스 2 + 4 + 16 = -1012
int
150을 out
이라고 쓰십시오. 이진 (특히 two's complement가)이 정수는 다음과 같다에서 :
0000 0000 0000 0000 0000 0000 1001 0110
8 비트의 각 그룹은 byte
데이터 유형과 유사한 1 바이트의 데이터이다. 그러나 모든 Java 정수 유형 (char
제외)과 마찬가지로 byte
이 서명됩니다. 따라서 마지막 byte
의 이진 값이 1001 0110
이더라도 -106
으로 표시됩니다.이 값은 2의 보수로 해당 바이트의 올바른 값입니다. 인쇄 명세서를 다음으로 대체 할 수 있습니다.
String[] strings = new String[b.length];
for (int i = 0; i < b.length; i++) {
strings[i] = Integer.toString(Byte.toUnsignedInt(b[i]));
}
System.out.println("[" + String.join(", ", strings) + "]");
부호없는 형식으로 바이트를 인쇄합니다. 각각은 범위 [0, 255]에있을 것이다.