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
?
答案 0 :(得分:1)
长维是64位,所以最大二进制字符串不能超过64长度(你有100)。您可以将数据拆分为多个64位部分,并收集Long
值列表。
或者您可以使用BigInteger:
BigInteger val = new BigInteger("110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011", 2);
System.out.println(val.toString()); // prints '526700554598729746900966573811'
答案 1 :(得分:0)
只需查看附页,了解特定类型的最大值和最小值。像有人建议的那样尝试使用BigInteger。
答案 2 :(得分: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.
答案 3 :(得分:-1)
你的字符串太长了;-) 查看Long.MAX_VALUE