본문 바로가기

Java

[Java] 진법 변환 (10진수 ↔ n진수)

Java에서 진법 변환은 크게 두 가지 상황으로 나눌 수 있다.

  1. 10진수 정수 → n진법 문자열 (int → String)
  2. 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.parseIntInteger.toString32비트 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진수 문자열)