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

问题描述:

我有十六进制数字:如何将十六进制数转换为十进制存储在一个DWORD而不是QWORD中?

FFFFFCE3 

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

printf "%d" "0xFFFFFCE3" 

和输出:

4294966499 

不过这是结果,如果我把它保存在一个QWORD。 我想知道如何将其存储在一个DWORD,所以输出中会是我期待的负数:

-797 
+0

感谢您的回复,但恐怕我已经搜查过了。你可以发布任何示例,或者可能是链接白皮书的信息? – harrison4 2014-10-06 17:52:36

+0

如何将它存储在bash中的dword/qword中?我相信,你不能在bash中控制它。 – anishsane 2014-10-07 05:20:06

+0

好的,那我怎么可以把'FFFFFCE3' coueld转换成'-797'而不是'4294966499'。我想在检查十六进制的第一个字符,如果它是'F',填写数字来产生这个:'0xFFFFFFFFFFFFFCE3'。你怎么看?谢谢! – harrison4 2014-10-07 06:20:07

要解释一个十六进制字符串作为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'

    此转换的无符号 32位整数成签署 32位整数,并将其打印。

+0

非常感谢John! – harrison4 2014-10-08 07:47:30