在Java中使用16位hex字符串到signed int

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

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

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

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

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

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

结果:

 -1 

尝试

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