본문 바로가기
Android/Java

[ Java ] Integer.parseInt(String s, int radix)를 활용한 자바에서의 진법 변환 기술

by quessr 2024. 3. 20.

 

2진수를 10진수로 바꿔주는 로직을 짜다가 알게 된 메서드이다.

처음에는

char[] stringArray = str.toCharArray();


String
binaryNumber = String.valueOf(stringArray);
int decimalNumber = 0;
int power = 0;

for (int i = binaryNumber.length() - 1; i >= 0; i-- ){
int digit = Character.getNumericValue(binaryNumber.charAt(i));
decimalNumber += digit * Math.pow(2, power);
power++;
}


이런식으로 일일히 반복문을 돌며 2의 제곱수를 곱해주는 방식으로 구현을 해 줬었는데,
자바에 주어진 문자열 s를 지정된 진법(radix)으로 해석하여 해당 진법의 정수 값으로 변환하는 역할을 해 주는 유용한 메서드가 있다는 사실을 알게 되었다.

 

위 메서드를 사용하게 되자

String binaryNumber = updatedSegment.toString();
int decimalNumber = Integer.parseInt(binaryNumber, 2);
segmentedArray[i] = String.valueOf(decimalNumber);

다음과 같이 로직이 간결 해 질 수 있었다.

사용법은 아래와 같다.

  • 2진법 변환: radix 값으로 2를 사용합니다. 예를 들어, String binary = "1010";이라는 이진수 문자열을 10진수로 변환하려면 int decimal = Integer.parseInt(binary, 2);와 같이 사용합니다.
  • 10진법 변환: radix 값으로 10을 사용합니다. 예를 들어, String decimalString = "42";라는 10진수 문자열을 정수로 변환하려면 int decimal = Integer.parseInt(decimalString, 10);와 같이 사용합니다. 주로 이 방법이 가장 많이 사용됩니다.
  • 8진법 변환: radix 값으로 8을 사용합니다. 예를 들어, String octal = "52";라는 8진수 문자열을 10진수로 변환하려면 int decimal = Integer.parseInt(octal, 8);와 같이 사용합니다.
  • 16진법 변환: radix 값으로 16을 사용합니다. 예를 들어, String hex = "2A";라는 16진수 문자열을 10진수로 변환하려면 int decimal = Integer.parseInt(hex, 16);와 같이 사용합니다

 

 


참고 :
https://docs.oracle.com/javase/9/docs/api/java/lang/Integer.html#parseInt-java.lang.String-int-
https://onepinetwopine.tistory.com/768

 

자바 JAVA ] 10진수 <-> 2진수 변환 / Integer.toBinaryString / Integer.parseInt

요약 10진수 -> 2진수 String : Integer.toHexString(8); 2진수 -> 10진수 int : Integer.parseInt("1000",2); java.lang패키지에 있는 Integer클래스는 10진수 값을 2진수로 바꾸고 2진수를 10진수로 바꿔주는 함수를 지원한

onepinetwopine.tistory.com