我正在尝试从.NET中移植代码到处使用UInt64的代码,我大部分时间都成功使用了BigInteger,但不幸的是,我已经陷入了一些非常简单的事情,因为从一个十六进制表中加载一个BigInteger值值。
在某些时候我想加载一个带有正 0x990951BA的BigInteger,只有我看到这样做是因为BigInteger b = BigInteger.valueOf(0x990951BA),这当然不起作用,因为Java将参数视为一个长期,使其成为负面。
我怎样才能做到这一点?
谢谢。
答案 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帮助程序类)。