Java에서 바이트 배열을 16진수로 변환
바이트 배열을 16진수 표현으로 변환하는 것은 소프트웨어 개발에서 일반적인 작업입니다. Java는 이 변환을 수행하기 위한 여러 가지 방법을 제공합니다.
한 가지 접근 방식은 특정 형식 문자열인 " X"와 함께 String.format() 메서드를 활용하는 것입니다. 예는 다음과 같습니다.
byte[] bytes = {-1, 0, 1, 2, 3 }; StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%02X ", b)); // Pad with zero and separate with space } System.out.println(sb.toString()); // Prints "FF 00 01 02 03"
이 방법을 사용하면 각 바이트가 두 문자의 16진수 문자열로 표시되며 빈 자리는 앞에 0이 표시됩니다.
또는 더 간결한 형식을 위해 표현에서는 패딩과 구분 기호를 생략할 수 있습니다.
StringBuilder sb = new StringBuilder(); for (byte b : bytes) { sb.append(String.format("%X", b)); // Shorter representation } System.out.println(sb.toString()); // Prints "FF00010203"
다음에 주목할 가치가 있습니다. Integer.toHexString()을 사용하여 16진수로 변환하기 전에 부호 있는 바이트를 32비트 정수로 변환하면 부호 확장으로 인해 잘못된 결과가 발생할 수 있습니다. 이 문제를 방지하려면 0xFF를 사용하여 바이트 값을 명시적으로 마스킹할 수 있습니다.
byte b = -1; System.out.println(Integer.toHexString(b & 0xFF)); // Correct conversion: "FF"
마지막으로 바이트 배열에 원시 바이트가 아닌 ASCII 문자가 포함된 경우 새 String(bytes, "US- ASCII") 생성자를 사용하여 문자열 표현을 직접 생성할 수 있습니다.
위 내용은 Java에서 바이트 배열을 16진수로 변환하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!