如何将十六进制数转换为存储在DWORD中的十进制而不是QWORD?

时间:2014-10-06 15:18:17

标签: python bash hex decimal dword

我有十六进制数字:

FFFFFCE3

然后,如果我试图将其转换为十进制数。我做了:

printf "%d" "0xFFFFFCE3"

输出:

4294966499

但如果我将它存储在QWORD中,这就是结果。 我想知道如何将它存储在DWORD中,因此输出将是我期待的负数:

-797

1 个答案:

答案 0 :(得分:2)

要将十六进制字符串解释为32位有符号整数,请运行:

$ python -c 'x=int("0xFFFFFCE3",16); print x if x<2**31 else x-2**32'
-797

说明:

  • x=int("0xFFFFFCE3",16)

    这会将base-16字符串转换为无符号整数。

  • print x if x<2**31 else x-2**32'

    这会将 unsigned 32位整数转换为 signed 32位整数并打印出来。