使用大的正数加载BigInteger

时间:2012-04-16 12:30:30

标签: java android biginteger uint uint64

我正在尝试从.NET中移植代码到处使用UInt64的代码,我大部分时间都成功使用了BigInteger,但不幸的是,我已经陷入了一些非常简单的事情,因为从一个十六进制表中加载一个BigInteger值值。

在某些时候我想加载一个带有 0x990951BA的BigInteger,只有我看到这样做是因为BigInteger b = BigInteger.valueOf(0x990951BA),这当然不起作用,因为Java将参数视为一个长期,使其成为负面。

我怎样才能做到这一点?

谢谢。

2 个答案:

答案 0 :(得分:2)

long在Java中是64位的,因此您应该能够将其用作UInt64的直接替代品。要指定long字面值,请在常量中附加l,以将其标识为long而不是int

BigInteger b = BigInteger.valueOf(0x990951BAl);

即使长时间过大的值的回退也是将其解析为文本。

BigInteger b = new BigInteger("990951BA", 16);

答案 1 :(得分:0)

由于您正在移植使用无符号长整数的代码,因此您可能还希望从UnsignedLong查看Google Guava。 (以及同一包中的UnsignedLongs帮助程序类)。