development

바이트 배열의 데이터를 문자로 인쇄하는 방법

big-blog 2020. 12. 13. 10:08
반응형

바이트 배열의 데이터를 문자로 인쇄하는 방법


내 바이트 배열에는 음수 값과 양수 값으로 구성된 메시지의 해시 값이 있습니다. (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

반응형