2017-02-22 43 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); 
    } 
} 

爲什麼我得到一個NumberFormatExceptionParseLong NumberFormat異常錯誤

+0

因爲它是Loooooooooooooooooooooooooooong –

+0

你的字符串's''很容易超越長數據類型可以容納! –

+1

「長」是64位。您正在指定99位。 '99> 64'。 – khelwood

回答

-1

你的字符串太長;-) 退房Long.MAX_VALUE

1

長的尺寸是64位,所以最大二進制字符串不能超過64個長度(你有100個)。您可以將數據拆分爲多個64位部分,並收集值爲Long的列表。

或者你可以使用的BigInteger:

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

只要看看在附頁,看看什麼是特定類型的最大值和最小值。按照某人的建議嘗試使用BigInteger。

Java basic data types

0

你得到一個NumberFormatException因爲數量110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011過於龐大存儲在Java中的long內。

僅供參考,Java中的long的最大值爲9223372036854775807(十進制)。在二進制中,這是111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111 1111,它小於:

1101 0100 1011 1011 1000 1111 1001 1000 1010 1000 0110 1011 1010 1000 0011 0110 1100 1011 1011 1100 1100 0000 1101 1110 011.