Java ParseLong NumberFormat异常错误

Java ParseLong NumberFormat异常错误,java,algorithm,Java,Algorithm,为什么会出现数字格式异常?您的字符串太长;-) 检查Long.MAX_VALUELong维度为64位,因此最大二进制字符串长度不能超过64位(您有100个)。您可以将数据拆分为几个64位部分,并收集Long值列表 也可以使用BigInteger: import java.util.*; public class HelloWorld { public static void main(String[] args) { String s = "110101001011101

为什么会出现
数字格式异常

您的字符串太长;-)
检查Long.MAX_VALUE

Long维度为64位,因此最大二进制字符串长度不能超过64位(您有100个)。您可以将数据拆分为几个64位部分,并收集
Long
值列表

也可以使用BigInteger:

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);
    }
}

只需查看附件页面,了解特定类型的最大值和最小值是多少。按照某人的建议尝试使用BigInteger


您将获得一个
NumberFormatException
,因为在Java中,
1101010010111011110001111100010101000010110101101101101101110111110000001111101101101101101101101101101111
中的数字太大,无法存储在
长的

作为参考,Java中
long
的最大值为9223372036854775807(十进制)。在二进制中,这是1111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111,小于:


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

因为它是looooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooooogy您的字符串
s
很容易超出长数据类型所能容纳的范围!
为64位。您正在指定99位
99>64
。有人给出了
BigInteger
作为答案,但由于某种原因它被删除了。它起作用了。
BigInteger val = new BigInteger("110101001011101110001111100110001010100001101011101010000011011011001011101111001100000011011110011", 2);
System.out.println(val.toString()); // prints '526700554598729746900966573811'