I have a string in Java representing a signed 16-bit value in HEX. This string can by anything from "0000"
to "FFFF"
.
I use Integer.parseInt("FFFF",16)
to convert it to an integer. However, this returns an unsigned value (65535
).
I want it to return a signed value. In this particular example "FFFF"
should return -1
.
How can I achieve this? Since its a 16-bit value I thought of using Short.parseShort("FFFF",16)
but that tells me that I am out of range. I guess parseShort()
expects a negative sign.
To convert a hexadecimal string to a numberUse the ToInt32(String, Int32) method to convert the number expressed in base-16 to an integer. The first argument of the ToInt32(String, Int32) method is the string to convert. The second argument describes what base the number is expressed in; hexadecimal is base 16.
Assuming that we have our hex number in a string, then a simple way to convert the hex number to decimal is to call Integer. parseInt(), passing in 16 as the second parameter: String hexNumber = ... int decimal = Integer.
You can cast the int
returned from Integer.parseInt()
to a short:
short s = (short) Integer.parseInt("FFFF",16);
System.out.println(s);
Result:
-1
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