Java에서 진법 변환은 크게 두 가지 상황으로 나눌 수 있다.
- 10진수 정수 → n진법 문자열 (int → String)
- n진법 문자열 → 10진수 정수 (String → int)
🧩 10진수 정수 → 다른 진법 문자열 (int → String)
int num = 42;
String binaryString = Integer.toBinaryString(num); // 101010 (2진수)
String octalString = Integer.toOctalString(num); // 52 (8진수)
String hexString = Integer.toHexString(num); // 2a (16진수)
String string = Integer.toString(num, 3); // 1120 (3진수)
- Integer.toBinaryString(int num) → 2진수 문자열
- Integer.toOctalString(int num) → 8진수 문자열
- Integer.toHexString(int num) → 16진수 문자열
- Integer.toString(int num, int radix) → 특정 진법(radix: 2~36) 문자열
🧩 n진법 문자열 → 10진수 정수 (String → int)
int a = Integer.parseInt("101010", 2); // 42 (2진수 → 10진수)
int b = Integer.parseInt("52", 8); // 42 (8진수 → 10진수)
int c = Integer.parseInt("2a", 16); // 42 (16진수 → 10진수)
int d = Integer.parseInt("1120", 3); // 42 (3진수 → 10진수)
- Integer.parseInt(String s, int radix) → 특정 진법(radix: 2~36) 문자열을 10진수 정수로 변환
⚠️ 주의점
- Integer.parseInt와 Integer.toString은 32비트 int 범위(-2,147,483,648 ~ 2,147,483,647)까지만 다룸
- Long에도 동일한 메서드가 있음 (Long.toString, Long.parseLong)
- 더 큰 숫자가 필요하다면 BigInteger 활용
import java.math.BigInteger;
BigInteger big = new BigInteger("101010", 2); // 2진수 문자열 → BigInteger
System.out.println(big); // 42
System.out.println(big.toString(16)); // "2a" (16진수 문자열)
'Java' 카테고리의 다른 글
| [Java] List<Integer> ↔ int[] 변환 방법 (0) | 2025.10.08 |
|---|---|
| [Java] 주요 자료구조 클래스의 핵심 메서드 (0) | 2025.10.08 |
| [Java] 자바의 예외 – 체크 예외 vs 언체크 예외 (2) | 2025.09.23 |
| [Java] 컬렉션 순회 중 발생하는 ConcurrentModificationException (0) | 2025.09.03 |
| [Java] >>(산술 시프트)와 >>>(논리 시프트)의 차이 (2의 보수와 오버플로우) (1) | 2025.06.23 |