2016-04-04 2 views
0

この問題は、10進数に変換できないバイナリ数字を含むJava文字列がある場合に発生します。NumberFormatException:バイナリdigitaを含む文字列を10進数に変換した結果、無効なint

質問タイトルの誤差は以下のコードの結果として、次のとおりです。

int decimalValue = Integer.parseInt("001001000110000111001001000111000110001010001011",2); 
     System.out.println("Ciphertext :\t"+decimalValue); 

私は「1101」のようなバイナリ数字の小さい文字列をテストするときただし、プログラムは正常に動作します。私はここで何か間違っていますか?

+1

整数は最大値を持ちます。私はあなたがその価値を超えていると推測しています。しかし、それは単なる推測です。 – Gendarme

+0

BigIntegerを続行することをどのように提案しますか?それがうまくいけばデモpocを置くことができますか?ありがとう! –

答えて

3

はい。あなたはintとして32ビット以上を解析しようとしています。あなたは(Integer.MAX_VALUE2147483647ある)40002404508299ある

long decimalValue = Long.parseLong(
     "001001000110000111001001000111000110001010001011", 2); 

のような(あなたの入力に基づいて)長いものが必要。

+1

'Integer.MAX_MAX_VALUE'は私が思うタイプミスです。 – Gendarme

+0

@Gendarme Typoが修正されました。ありがとう。 –

関連する問題