BigInteger NumberFormat有效的大二进制字符串上的异常



所以,我正在使用BigInteger将一些二进制字符串转换为数字表示,最终陷入了一个奇怪的错误。

当此行代码运行时,它会引发 NumberFormatException:

BigInteger temp = new BigInteger(strbuf.toString(), 2);

其中 strbuf 具有以下字符串(仅由零和一组成):

"1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010"

起初我认为字符串或值可能太大,但以下独立的 java 类编译和运行得很好:

import java.math.BigInteger;
class test {
    public static void main(String[] argv) {
        StringBuffer strbuf = new StringBuffer("1001110000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010");
        BigInteger big = new BigInteger(strbuf.toString(), 2);
        System.out.println(big);
    }
}

我这里缺少什么吗?为什么具有明显相同值的相同代码无法在我的主应用程序上运行?

异常消息:

Exception in thread "main" java.lang.NumberFormatException: For input string: "1001110000000100"
    at java.lang.NumberFormatException.forInputString(Unknown Source)
    at java.lang.Integer.parseInt(Unknown Source)
    at java.math.BigInteger.<init>(Unknown Source)
    at org.app.star.pad(star.pad:42)

根据我的 j2ee5 野生动物园书,有一个尝试(隐式建议)将值转换为java.lang.Integer,一个包装器整数类型。这就是问题所在。请注意异常中的第 2 行"at"行放松。。。

这可能是一个优化问题。关闭主优化程序不是精简的演示程序。

真诚地

箭在树

最新更新