본문으로 바로가기
반응형

안녕하세요, 여러분. 이번에는 Java에서 byte 데이터를 Hex 데이터로 변환하는 방법에 대해 알아보려 합니다. 이를 위해 보편적으로 사용되는 byteToHex 메서드를 만들고 사용해보는 시간을 갖도록 하겠습니다.

byteToHex 메서드란?
byteToHex 메서드는 이름에서 알 수 있듯이 byte 타입의 데이터를 Hex(16진수) 형태의 문자열로 변환하는데 사용되는 메서드입니다. byte 배열이 주어지면 각 byte를 16진수 문자열로 변환한 후, 이를 연결하여 하나의 문자열로 만들어줍니다.

메서드 구현하기
다음은 byteToHex 메서드를 구현하는 코드입니다.

public class ByteToHex {
    private static final char[] HEX_ARRAY = "0123456789ABCDEF".toCharArray();

    public static String byteToHex(byte[] bytes) {
        char[] hexChars = new char[bytes.length * 2];
        for (int j = 0; j < bytes.length; j++) {
            int v = bytes[j] & 0xFF;
            hexChars[j * 2] = HEX_ARRAY[v >>> 4];
            hexChars[j * 2 + 1] = HEX_ARRAY[v & 0x0F];
        }
        return new String(hexChars);
    }
}

이 코드는 byte 배열을 입력 받아 각 byte를 16진수 형태로 변환하고, 그 결과를 하나의 문자열로 연결하여 반환합니다.

HEX_ARRAY는 16진수의 각 값을 나타내는 문자들을 저장한 배열입니다. byteToHex 메서드에서는 각 byte를 두 자리의 16진수로 변환하기 위해 이 배열을 참조하고 있습니다. 각 byte는 0xFF와 비트 AND 연산을 통해 부호 없는 정수로 변환되고, 이후에 이 값의 상위 4비트와 하위 4비트를 각각 추출하여 해당하는 16진수 문자를 얻습니다.

사용 예제
이제 이 메서드를 이용하여 byte 데이터를 16진수 문자열로 변환하는 예제를 살펴봅시다.

public class Main {
    public static void main(String[] args) {
        byte[] bytes = {10, 2, 15, 11};
        String hexString = ByteToHex.byteToHex(bytes);
        System.out.println(hexString);  // 출력: 0A020F0B
    }
}

위 코드는 {10, 2, 15, 11} byte 배열을 "0A020F0B"라는 16진수 문자열로 변환하는 예제입니다.


byte 데이터를 16진수 문자열로 변환하는 byteToHex 메서드는 데이터를 가독성 좋은 형태로 표현하거나, 데이터를 문자열 형태로 처리해야 할 때 유용하게 사용할 수 있습니다. Java에서 제공하는 다양한 유틸리티 메서드들을 잘 활용하면, 효율적이고 안정적인 코드를 작성할 수 있습니다.

다음 시간에는 또 다른 유용한 Java 유틸리티 메서드를 소개드리겠습니다. 그럼, 행복한 코딩 시간 되세요!

반응형