Computer >> 컴퓨터 >  >> 프로그래밍 >> Java

Java에서 문자열을 16진수로, 16진수를 문자열로 변환하는 방법

문자열을 16진수로 변환하기

Java의 Integer 클래스가 제공하는 toHexString() 메서드는 정수를 매개변수로 받아 그에 해당하는 16진수 문자열을 반환합니다. 이 메서드를 활용하면 문자열을 손쉽게 16진수 문자열로 변환할 수 있으며, 구체적인 절차는 다음과 같습니다.

  • 변환하고자 하는 문자열을 준비합니다.
  • 빈 StringBuffer 객체를 생성합니다.
  • String 클래스의 toCharArray() 메서드를 사용해 문자열을 문자 배열로 변환합니다.
  • 반복문을 통해 배열의 각 요소를 순회합니다.
  • 반복문 내부에서 각 문자를 정수로 변환한 뒤, Integer 클래스의 toHexString() 메서드에 인자로 전달하여 16진수 문자열을 얻습니다.
  • StringBuffer 클래스의 append() 메서드를 사용해 결과 값을 StringBuffer 객체에 차례대로 추가합니다.
  • 마지막으로 StringBuffer 클래스의 toString() 메서드를 호출해 최종 결과를 문자열로 변환합니다.

예제 코드

import java.util.Scanner;
public class StringToHexadecimal {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a String value: ");
        String str = sc.next();
        StringBuffer sb = new StringBuffer();
        //Converting string to character array
        char ch[] = str.toCharArray();
        for(int i = 0; i < ch.length; i++) {
            String hexString = Integer.toHexString(ch[i]);
            sb.append(hexString);
        }
        String result = sb.toString();
        System.out.println(result);
    }
}

실행 결과

Enter a String value:
Tutorialspoint
5475746f7269616c73706f696e74

16진수를 문자열로 변환하기

반대로 16진수(String) 값을 다시 원래의 문자열로 변환하는 것도 같은 원리로 가능합니다. 변환 과정은 다음과 같습니다.

  • 16진수 형태의 문자열 값을 입력받습니다.
  • toCharArray() 메서드를 사용해 이를 문자 배열로 변환합니다.
  • 배열에서 두 글자씩 묶어 하나의 문자열로 만듭니다.
  • 해당 문자열을 16진수 기준(base 16)으로 정수로 파싱한 후, char 타입으로 캐스팅합니다.
  • 변환된 모든 문자를 이어 붙여 최종 문자열을 완성합니다.

이때 한 글자의 16진수 표현이 항상 두 자리로 구성된다는 점에 유의하면, 반복문에서 인덱스를 2씩 증가시키며 처리하는 방식을 쉽게 이해할 수 있습니다.

예제 코드

import java.util.Scanner;
public class HexadecimalToString {
    public static void main(String args[]) {
        Scanner sc = new Scanner(System.in);
        System.out.println("Enter a Hexadecimal value: ");
        String str = sc.next();
        String result = new String();
        char[] charArray = str.toCharArray();
        for(int i = 0; i < charArray.length; i=i+2) {
            String st = ""+charArray[i]+""+charArray[i+1];
            char ch = (char)Integer.parseInt(st, 16);
            result = result + ch;
        }
        System.out.println(result);
    }
}

실행 결과

Enter a Hexadecimal value:
5475746f7269616c73706f696e74
Tutorialspoint