Coding/수학코딩

[Java] 진법 변환 쉽게 하는 방법 (10진법을 다양한 진법으로 변환하기)

잇뉴얼 2022. 7. 7. 10:04
728x90
반응형

[Java] 진법 변환 쉽게 하는 방법 (10진법을 다양한 진법으로 변환하기)


코딩을 하다보면 한번씩 진법 변환을 해야되는경우가 있습니다. 진법 변환을 할려고 로직을 짜보면 간단하게 짤수는 있습니다.

int a = 151;
String result = "";

// 10진법 -> 3진법으로 변환
while(a > 0) {
    int b = a%3;
    result += b;
    a = a/3;
}
StringBuffer sb = new StringBuffer(result);
result = sb.reverse().toString();

// 결과
result = 12121

로직을 보면 그렇게 어려운 느낌은 아닙니다. 3진법을 구하기 위해 a에 담겨있는 10진법 데이터값을 3으로 나눈 나머지값을 문자열에 포함시킨 다음, a의 값을 3으로 나눠서 a값이 0이 될때 까지 반복을 해주면 됩니다. 그런데 이 코드 말고, 더 간단한 코드가 있었습니다.

int a = 151;
String result = Integer.toString(a,3);

// 결과
result = 12121

toString(10진법, 원하는 진법)을 작성하면, 자동으로 원하는 진법 변환을 해주게 됩니다.

▶ 참고 : 10진법으로 돌리는 방법
String a = "12210";

int decimal = 0;
int count = a.length()-1;
for(int i = 0; i < a.length(); i++) {
    decimal += Integer.parseInt(a.substring(i, i+1))*Math.pow(3,count);
    count--;
}
System.out.println("decimal = " + decimal);

// 결과
decimal = 156

위의 코드는 a의 값이 3진법이라는 가정하예 10진법으로 변환하는 코드입니다. 만일 다른 진법을 10진법으로 만들어내길 원하신다면, Math.pow에 '3'을 수정해주시면 됩니다.

반응형