I have a hex string that represents a 2's complement number. Is there an easy way (libraries/functions) to translate the hex into a decimal without working directly with its bits??
E.G. This is the expected output given the hex on the left:
"0000" => 0
"7FFF" => 32767 (max positive number)
"8000" => -32768 (max negative number)
"FFFF" => -1
Thanks!
This seems to trick java into converting the number without forcing a positive result:
Integer.valueOf("FFFF",16).shortValue(); // evaluates to -1 (short)
Of course this sort of thing only works for 8, 16, 32, and 64-bit 2's complement:
Short.valueOf("FF",16).byteValue(); // -1 (byte)
Integer.valueOf("FFFF",16).shortValue(); // -1 (short)
Long.valueOf("FFFFFFFF",16).intValue(); // -1 (int)
new BigInteger("FFFFFFFFFFFFFFFF",16).longValue(); // -1 (long)