Java中2的十六进制补码到十进制

我有一个代表2的补码的十六进制字符串。是否有一种简单的方法(库/函数)将十六进制转换为十进制而不直接使用其位?

EG这是给定左侧十六进制的预期输出:

"0000" => 0

"7FFF" => 32767 (max positive number)

"8000" => -32768 (max negative number)

"FFFF" => -1

谢谢!

回答:

这似乎在欺骗Java转换数字而不强制给出正结果:

Integer.valueOf("FFFF",16).shortValue(); // evaluates to -1 (short)

当然,这种情况仅适用于8、16、32和64位2的补码:

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)

以上是 Java中2的十六进制补码到十进制 的全部内容, 来源链接: utcz.com/qa/425231.html

回到顶部