如何使用 python3 将十六进制转换为有符号整数
How to convert Hex into Signed Integer using python3
使用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
class 方法。
s = bytes.fromhex('FFFC')
i = int.from_bytes(s, 'big', signed=True)
print(i)
非常不言自明,唯一可能需要澄清的是 'big'
参数,但这只是意味着字节数组 s
最重要的字节在前。
使用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
class 方法。
s = bytes.fromhex('FFFC')
i = int.from_bytes(s, 'big', signed=True)
print(i)
非常不言自明,唯一可能需要澄清的是 'big'
参数,但这只是意味着字节数组 s
最重要的字节在前。