2014-10-18 2 views
0

나는 자바에 정말 익숙하지 않아 내 무지를 변명하지만 내 프로그램이 매번 오류를 던지는 이유를 알 수 없다. 문자열을 바이너리로 변환하는 프로그램을 만들고 있습니다. 내 잘못이야. 모든 종류의 다른 메서드를 시도했지만 항상 같은 오류가 throw됩니다. :(내 바이너리 프로그램에서 java.lang.NumberFormatException

Exception in thread "main" java.lang.NumberFormatException: For input string: "010000010001011110010000000010001000" 
at java.lang.NumberFormatException.forInputString(Unknown Source) 
at java.lang.Integer.parseInt(Unknown Source) 
at main.main(main.java:64) 

여기에 코드를 내 라인.

당신이 궁금해하는 경우 바이너리가 모두 StringBuilder와 함께 사용
int charCode = Integer.parseInt(String.valueOf(binary), 2); 

. 감사합니다 사전에! :) PS I 시도와 같은 유사한 문제를 찾았어요 내 것이지만 아무 소용이 없습니다. 자바

답변

2

시도 :

+0

고마워요! :) 매우 도움이됩니다. –

2

정수 (거의 모든 다른 프로그래밍 언어) 당신이 inputing하는 그것을 할 수있는 유일한 상점 ~ 4 300 000 000 번호, 음수로, 그것이 ~ -2 147 000 000+2 147 000 000

번호 그냥 의미, 4 바이트 길이 그것을 Integer로 파싱하기에는 너무 크다.


또한 이진 코드를 정수로 구문 분석해야하는 이유가 없습니다.

String binaryInput = "10000010001011110010000000010001000"; 

    long myNumber = 0; 
    for (int i = binaryInput.length()-1; i >= 0; i--) { 
     if (binaryInput.charAt(i) == '1') { 
      myNumber += Math.pow(2, binaryInput.length() - i - 1); 
     } 
    } 

    System.out.println("And the value is: " + myNumber); 

출력 :

And the value is: 17473011848 
0

long charCode = Long.parseLong(String.valueOf(binary), 2); 

바이너리 값 이상의 Integer.MAX_VALUE 어떻게베이스 BigInteger의 약 '이 트릭을 할해야 2 '?? 코드의 한 줄 ....

String str = "010000010001011110010000000010001000"; 
System.out.println(new BigInteger(str, 2)); 
관련 문제