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!
You can use BigInteger
to parse it and get back a long
:
long value = new BigInteger("d1bc4f7154ac9edb", 16).longValue();
System.out.println(value); // this outputs -3333702275990511909
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With