将仅包含数字的长字符串转换为长字符串

Convert a long String only containing numbers into long

我正在尝试将一个字符串(32 位数字)转换为一个长整数,它 returns 一个 NumberFormatException。我已经用 Long.parseLong() 和一个 Long 对象试过了,但是它们的骨头起作用了。 代码:

class ConvertStringToLong{
    public static void main(String in){
        long out;
        out=java.lang.Long.parseLong(in);
        System.out.println(out);
    }
}

我也试过

class ConvertStringToLong{
    public static void main(String in){
        long out;
        out = new Long(in);
        System.out.println(out);
    }
}

long 数据类型是一个 64 位有符号整数,所以它的最大值是 2^63 - 1,也就是 19 位长。要表示比这更大的数字,您需要使用不同的数据类型,例如 BigInteger,它允许任意大的数字。构造函数 new BigInteger(String val) 会将字符串解析为 BigInteger。

这里的文档 (https://docs.oracle.com/javase/8/docs/api/java/math/BigInteger.html) 说:

BigInteger must support values in the range -2^Integer.MAX_VALUE (exclusive) to +2^Integer.MAX_VALUE (exclusive) and may support values outside of that range. The range of probable prime values is limited and may be less than the full supported positive range of BigInteger. The range must be at least 1 to 2^500000000.

您可以使用 BigInteger 对象。