Converts a hex string into an int. Integer.parseInt(hex, 16) assumes the
input is nonnegative unless there is a preceding minus sign. This method
reads the input as twos complement instead, so if the input is 8 bytes
long, it will correctly restore a negative int produced by
Integer.toHexString() but not necessarily one produced by
Integer.toString(x,16) since that method will produce a string like '-FF'
for negative integer values.
hex - A string in capital or lower case hex, of no more then 16
NumberFormatException - if the string is more than 16 characters long, or if any
character is not in the set [0-9a-fA-f]