在Java中使用16位十六进制字符串到signed int

时间:2013-03-04 13:42:58

标签: java parsing signed hex

我在Java中有一个字符串表示HEX中带符号的16位值。此字符串可以是"0000""FFFF"之间的任何内容。

我使用Integer.parseInt("FFFF",16)将其转换为整数。但是,这会返回无符号值(65535)。

我希望它返回一个有符号的值。在此特定示例中,"FFFF"应返回-1

我怎样才能做到这一点?由于它是一个16位值我想到使用Short.parseShort("FFFF",16),但这告诉我,我超出了范围。我猜parseShort()预计会出现负号。

2 个答案:

答案 0 :(得分:14)

您可以将从int返回的Integer.parseInt()转换为短片:

short s = (short) Integer.parseInt("FFFF",16);
System.out.println(s);

结果:

-1

答案 1 :(得分:2)

int i = (short) Integer.parseInt("FFFF", 16);