코딩테스트/Java

[Java] 자바 진수변환 알고리즘

SK_MOUSE 2021. 1. 25. 15:07
반응형
  • 10진수->2/8/16진수

Integer.toBinaryString(바꿀문자열);

Integer.toOctalString(바꿀문자열);

Integer.toHexString(바꿀문자열);

int i = 127;
 
String binaryString = Integer.toBinaryString(i); //2진수
String octalString = Integer.toOctalString(i);   //8진수
String hexString = Integer.toHexString(i);       //16진수
 
System.out.println(binaryString); //1111111
System.out.println(octalString);  //177
System.out.println(hexString);    //7f

 

 

  • 2/8/16진수 -> 10진수

Integer.parseInt(바꿀문자열, 변환할진수);

int binaryToDecimal = Integer.parseInt(binaryString, 2);
int binaryToOctal = Integer.parseInt(octalString, 8);
int binaryToHex = Integer.parseInt(hexString, 16);
 
System.out.println(binaryToDecimal); //127
System.out.println(binaryToOctal);   //127
System.out.println(binaryToHex);     //127

 

 

  • 나머지 진수변환은 알고리즘을 이용해서 풀이하는 방법뿐.

//String s="";
int decNumber = 10;
int 진수 = 2;

StringBuilder sub = new StringBuilder("");
while(decNumber>0){
                int remain = decNumber%진수;
                decNumber /= 진수;
                //sub = remain + sub;
                sub.append(remain);
}
String 변환완료 = sub.reverse().toString();//뒤집어주어야함
System.out.println(변환완료);

StringBuilder를 이용하는것을 우선하여 작성하였다.

 

설명하자면, 나머지값을 문자열에 더해주는건데,

위와같이 역순으로 읽어주어야한다.

StringBuilder를 이용시, append를 할경우 뒤에다가 쌓이므로

전체 문자열을 역순으로 뒤집어주는 reverse()호출이 필요하다.

 

ex)1011 -> 1101로 역순변환.

반응형