>Java >java지도 시간 >Java에서 바이트 배열을 16진수로 변환하는 방법은 무엇입니까?

Java에서 바이트 배열을 16진수로 변환하는 방법은 무엇입니까?

Patricia Arquette
Patricia Arquette원래의
2024-11-28 18:23:13498검색

How to Convert a Byte Array to Hexadecimal in Java?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.