I'm trying to port a code from .NET which uses UInt64 everywhere, I've mostly succeeded using BigInteger, but unfortunately I've become stuck at something really simple as loading a BigInteger with a value from a table of hex values.
At some point I want to load a BigInteger with the positive 0x990951BA, only way I saw to do this was with BigInteger b = BigInteger.valueOf(0x990951BA), this of course does not work because Java treats the argument as a long, making it negative.
How can I achieve this?
Thank you.
long
is 64-bit in Java, so you should be able to use it as a direct substitute for UInt64
. To specify a long
literal, append an l
to the constant to have it recognized as long
rather than int
.
BigInteger b = BigInteger.valueOf(0x990951BAl);
A fallback for values which are too big even for long is to parse it as text.
BigInteger b = new BigInteger("990951BA", 16);