0

我正在尝试从 .NET 移植一个在任何地方都使用 UInt64 的代码,我已经成功地使用了 BigInteger,但不幸的是,我遇到了一些非常简单的事情,比如使用十六进制值表中的值加载 BigInteger。

在某些时候,我想加载一个带有正数0x990951BA 的 BigInteger,我看到的唯一方法是使用 BigInteger b = BigInteger.valueOf(0x990951BA),这当然不起作用,因为 Java 将参数视为 long,使其消极的。

我怎样才能做到这一点?

谢谢你。

4

2 回答 2

2

long在 Java 中是 64 位的,因此您应该能够将其用作UInt64. 要指定long文字,请将 an 附加l到常量以使其识别为long而不是int.

BigInteger b = BigInteger.valueOf(0x990951BAl);

对于即使长时间过大的值的后备方式是将其解析为文本。

BigInteger b = new BigInteger("990951BA", 16);
于 2012-04-16T12:32:13.723 回答
0

由于您要移植使用无符号长整数的代码,因此您可能还想查看来自Google Guava的UnsignedLong。(以及同一包中的 UnsignedLongs 助手类)。

于 2012-04-16T12:52:13.623 回答