我有十六进制数字:
FFFFFCE3
然后,如果我试图将其转换为十进制数。我做了:
printf "%d" "0xFFFFFCE3"
输出:
4294966499
但如果我将它存储在QWORD中,这就是结果。 我想知道如何将它存储在DWORD中,因此输出将是我期待的负数:
-797
答案 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位整数并打印出来。