16진법(Hexadecimal)은 0부터 9까지의 숫자와 A(10)부터 F(15)까지의 알파벳으로 표현되는 숫자 체계입니다. 이 체계는 2진법(binary) 표현과 밀접한 관련이 있어 컴퓨터과학 및 프로그래밍에서 중요하게 사용됩니다. 16진수 한 자리는 2진수 4자리(비트)를 표현할 수 있기 때문에 바이너리 데이터를 간결하게 표현하는 데 유용합니다.
1. 16진법 표현
16진수 리터럴은 0x 또는 0X 접두사로 시작합니다.
int hexNumber = 0x1A; // 10진수로는 26에 해당
2. Integer 클래스와 16진수 관련 메서드
toHexString(int i) : 주어진 정수를 16진수 문자열로 변환합니다.
int number = 255;
String hexStr = Integer.toHexString(number); // 결과: "ff"
parseInt(String s, int radix) : 주어진 기수의 문자열을 10진수 정수로 파싱합니다. 16진수를 파싱할 때는 16을 기수로 사용합니다.
String hexString = "1a";
int decimalValue = Integer.parseInt(hexString, 16); // 결과: 26
3. BigInteger 클래스와 16진수
java.math.BigInteger 클래스를 사용하면 큰 정수 값을 16진수로 표현하고 연산할 수 있습니다.
BigInteger bigHex = new BigInteger("1A", 16); // 16진수 "1A"를 BigInteger 객체로 생성
String hexValue = bigHex.toString(16); // BigInteger 객체를 16진수 문자열로 변환
4. 바이트 배열과 16진수
바이트 배열을 16진수 문자열로 변환하거나 그 반대의 작업을 수행하는 것은 일반적인 작업 중 하나입니다. 주로 바이너리 데이터의 16진수 표현을 확인하거나 출력할 때 사용됩니다.
byte[] bytes = {0x1A, 0x2B, 0x3C};
StringBuilder hexBuilder = new StringBuilder();
for (byte b : bytes) {
hexBuilder.append(String.format("%02X", b));
}
String hexOutput = hexBuilder.toString(); // 결과: "1A2B3C"
16진법은 메모리 주소, 색상 코드, 바이너리 데이터의 텍스트 표현 등 다양한 분야에서 중요하게 사용됩니다. 자바는 이러한 16진법 연산과 표현을 지원하기 위해 다양한 도구와 메서드를 제공합니다.
With ChatGPT