문자열을 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