问题描述
使用pyhton3打印结果的最简单方法是什么
- 我有一个十六进制字符串
s="FFFC"
- 在 python 中,如果使用此命令行:
print(int(s,16))
- 我期望的结果是 -4(采用签名格式)。但事实并非如此,它显示结果为 65,532 的 Unsigned 格式。
- 我怎样才能以最简单的方式转换它?
提前致谢。
解决方法
有几种方法,但您可以明确地进行数学计算(假设 s
的字符不超过 4 个,否则使用 s[-4:]
):
i = int(s,16)
if i >= 0x8000:
i -= 0x10000
,
您可以使用 bytes.fromhex
和 int.from_bytes
类方法。
s = bytes.fromhex('FFFC')
i = int.from_bytes(s,'big',signed=True)
print(i)
不言自明,唯一可能需要澄清的是 'big'
参数,但这仅意味着字节数组 s
的最高有效字节在前。