从整数转换为大整数(BigInteger)

146

我想知道是否有办法将一个类型为Integer的变量转换为BigInteger。我尝试对Integer变量进行类型转换,但是出现了不可转换类型的错误。


13
您询问了一些关于BigInteger的问题,这些问题可以通过阅读Javadocs轻松解决。请点击我的回答中的链接,并查看BigInteger具有的所有方法和构造函数。 - jjnguy
3个回答

257

您需要的方法是BigInteger#valueOf(long val)

例如,

BigInteger bi = BigInteger.valueOf(myInteger.intValue());
使一个字符串成为第一位是不必要且不需要的。

2
@Mich,不需要。如果它是一个整数,Java会自动为您扩展它。(OP说他有一个Integer) - jjnguy
1
这样做同样有效。在整数上,intValue()不会溢出,因此对valueOf的调用将简单地将int扩展为long。在这个例子中,使用longValue()和intValue()没有明显的区别,但如果他从Long开始,他会想要使用longValue()。 - jbindel
3
艾玛,这将类似于其他基于字符串的方法。关键是要避免生成或解析任何字符串。 - jbindel
2
使用字符串不会给你错误的答案,但对于计算机来说是额外的工作。例如,你可以通过走到隔壁房子去隔壁房子,或者你可以朝相反的方向走,绕着地球走近所有的路程。你仍然会到达那里,如果你有一个快速的火箭飞机,你可能不会注意到它花费的时间,但这是浪费的,而且需要更长的时间。 - jbindel
1
如果myInteger为null,那么会出现NPE的情况。 - Wizzard
显示剩余3条评论

2

将整数转换为大整数

        BigInteger big_integer = BigInteger.valueOf(1234);

将 BigInteger 转换回 Integer

int integer_value = big_integer.intValue();

将 BigInteger 转换为 long
long long_value = big_integer.longValue();

将字符串转换为BigInteger

        BigInteger bigInteger = new BigInteger("1234");

将BigInteger转换回字符串
        String string_expression = bigInteger.toString();

-4
你可以这样做:
    Integer i = 1;
    new BigInteger("" + i);

8
可以这样做,但为什么要这样呢?已经接受的答案中提出了一个更好的解决方案。 - Colin
将字符串用于执行整数运算会浪费比您想象的更多的 CPU 周期。 - jbindel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接