I have a bunch of hex strings, one of them, for example is:
d1bc4f7154ac9edb
which is the hex value of "-3333702275990511909". This is the same hex you get if you do Long.toHexString("d1bc4f7154ac9edb");
For now, let's just assume I only have access to the hex string values and that is it. Doing this:
Long.parseLong(hexstring, 16);
Doesn't work because it converts it to a different value that is too large for a Long. Is there away to convert these unsigned hex values into signed longs?
Thanks!
The method below has the benefit of not creating another
BigInteger
object every time you need to do this.This produces
You may split it in half and read 32 bits at a time. Then use shift-left by 32 and a logical or to get it back into a single long.
The prior answers are overly complex or out of date.
Long.parseUnsignedLong(hexstring, 16)
You can use
BigInteger
to parse it and get back along
: