2017-02-22 7 views
-4
import java.util.*; 
public class HelloWorld { 
    public static void main(String[] args) { 
     String s = "110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011"; 
     long sum = Long.parseLong(s, 2); 
     System.out.println(sum); 
    } 
} 

NumberFormatExceptionはなぜ発生しますか?ParseLong NumberFormat例外エラー

+0

Loooooooooooooooooooooooooooongです –

+0

あなたの文字列 's'は、データ型が保持できる長さを超えてしまうことがあります。 –

+1

'long'は64ビットです。あなたは99ビットを指定しています。 '99> 64'です。 – khelwood

答えて

-1

あなたの文字列が;-) 長すぎるはLong.MAX_VALUE

1

長い寸法をチェックしてくださいので、最大バイナリ文字列は、(あなたは100を持っている)64以上の長さにすることはできません、64ビットです。データを複数の64ビット部分に分割し、Long値のリストを収集することができます。

それとも、BigIntegerのを使用することができます。

BigInteger val = new BigInteger("110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011", 2); 
System.out.println(val.toString()); // prints '526700554598729746900966573811' 
0

ちょうど添付ページを見て、特定のタイプの最大値と最小値であるかを参照してください。 BigIntegerを試してみてください。

Java basic data types

0

110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011はJavaでlong内に格納することがあまりにも大きいので、あなたはNumberFormatExceptionを得ています。

Javaのlongの最大値は、9223372036854775807(10進数)です。

1101 0100 1011 1011 1000年1111 1001 1000年1010 1000年0110 1011 1010 1000年0011 0110 1100 1011 1011:バイナリでは、これは以下である111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111です1100 1100 0000 1101 1110 011.