반응형
바이트 배열의 데이터를 문자로 인쇄하는 방법
내 바이트 배열에는 음수 값과 양수 값으로 구성된 메시지의 해시 값이 있습니다. (char)byte[i]
문 을 사용하여 양수 값을 쉽게 인쇄 할 수 있습니다 . 이제 어떻게 음수 값을 얻을 수 있습니까?
십진수로 인쇄하는 것이 만족 스러우면 마스크를 사용하여 양수로 만들 수 있습니다.
int positive = bytes[i] & 0xff;
하지만 해시를 인쇄하는 경우 16 진수를 사용하는 것이 더 일반적입니다. Java에서 바이너리 데이터를 16 진수 문자열로 변환하는 문제를 해결하는 Stack Overflow에 대한 다른 질문이 많이 있습니다.
어때요 Arrays.toString(byteArray)
?
다음은 컴파일 가능한 코드입니다.
byte[] byteArray = new byte[] { -1, -128, 1, 127 };
System.out.println(Arrays.toString(byteArray));
산출:
[-1, -128, 1, 127]
바퀴를 다시 발명하는 이유 ...
바이트를 문자로 인쇄하려면 String 생성자를 사용할 수 있습니다.
byte[] bytes = new byte[] { -1, -128, 1, 127 };
System.out.println(new String(bytes, 0));
이걸로 해봐 : new String(byte[])
시도 해봐:
public static String print(byte[] bytes) {
StringBuilder sb = new StringBuilder();
sb.append("[ ");
for (byte b : bytes) {
sb.append(String.format("0x%02X ", b));
}
sb.append("]");
return sb.toString();
}
예:
public static void main(String []args){
byte[] bytes = new byte[] {
(byte) 0x01, (byte) 0xFF, (byte) 0x2E, (byte) 0x6E, (byte) 0x30
};
System.out.println("bytes = " + print(bytes));
}
산출: bytes = [ 0x01 0xFF 0x2E 0x6E 0x30 ]
byte[] buff = {1, -2, 5, 66};
for(byte c : buff) {
System.out.format("%d ", c);
}
System.out.println();
당신을 얻습니다
1 -2 5 66
참고 URL : https://stackoverflow.com/questions/6463580/how-to-print-the-data-in-byte-array-as-characters
반응형
'development' 카테고리의 다른 글
탭 바에서 비활성 아이콘 / 텍스트 색상을 변경하는 방법은 무엇입니까? (0) | 2020.12.13 |
---|---|
객체 배열을 Swift의 Dictionary에 매핑 (0) | 2020.12.13 |
XAMPP-예기치 않게 MySQL 종료 (0) | 2020.12.13 |
iOS에서 애니메이션으로 탭 막대를 숨기는 방법은 무엇입니까? (0) | 2020.12.13 |
UI를 차단하지 않고 배열을 반복하는 가장 좋은 방법 (0) | 2020.12.12 |