如何使用 python3 将十六进制转换为有符号整数

How to convert Hex into Signed Integer using python3

使用pyhton3打印结果最简单的方法是什么

  1. 我有一个十六进制字符串s="FFFC"
  2. 在 python 中,如果使用此命令行:print(int(s,16))
  3. 我期望的结果是 -4(已签名格式)。但事实并非如此,它显示的是结果为 65,532 的 Unsigned 格式。
  4. 如何以最简单的方式进行转换?

提前致谢。

有几种方法,但您可以明确地进行数学运算(假设 s 不超过 4 个字符,否则使用 s[-4:]):

i = int(s, 16)
if i >= 0x8000:
    i -= 0x10000

您可以使用 bytes.fromhexint.from_bytes class 方法。

s = bytes.fromhex('FFFC')
i = int.from_bytes(s, 'big', signed=True)
print(i)

非常不言自明,唯一可能需要澄清的是 'big' 参数,但这只是意味着字节数组 s 最重要的字节在前。