java 十六进制字符串转换为有符号整数

发布时间 2023-08-02 19:59:40作者: zhaogaojian
String hexString = "FEF7"; // 十六进制字符串
int intValue = Integer.parseInt(hexString, 16); // 将十六进制字符串转换为整数
short signedValue = (short) intValue; // 转换为短整型(16位有符号整数)
int intValue = (bytes[1] & 0xFF) << 8 | (bytes[0] & 0xFF); // 合并两个字节为一个整数
return (short) ((intValue > 0x7FFF) ? (intValue - 0x10000) : intValue);

示例:0xF7FE代表-26.5

如果假设 0xFEF7 是一个带符号整数的补码,并且你希望将其转换为负数,那么需要执行以下步骤:

  1. 取反操作: 首先,对补码进行逐位取反操作,即将 0 变为 1,将 1 变为 0。

  2. 加 1: 在取反的结果上加 1。

这两个步骤合并起来,就是将补码取反后再加 1,得到原始的负数。以下是具体的计算过程示例:

假设 0xFEF7 是一个带符号整数的补码:

  1. 取反操作: 逐位取反得到 0x0108。

  2. 加 1: 在取反结果上加 1 得到 0x0109。

最终,原始的负数是 -265,与你之前提到的结果一致。请注意,这是假设 0xFEF7 是一个带符号整数的补码,实际情况可能需要更多上下文信息来确认。