如何将十六进制数转换为十进制存储在一个DWORD而不是QWORD中?
问题描述:
我有十六进制数字:如何将十六进制数转换为十进制存储在一个DWORD而不是QWORD中?
FFFFFCE3
然后,如果我试图将其转换为十进制数。我所做的:
printf "%d" "0xFFFFFCE3"
和输出:
4294966499
不过这是结果,如果我把它保存在一个QWORD。 我想知道如何将其存储在一个DWORD,所以输出中会是我期待的负数:
-797
答
要解释一个十六进制字符串作为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
感谢您的回复,但恐怕我已经搜查过了。你可以发布任何示例,或者可能是链接白皮书的信息? – harrison4 2014-10-06 17:52:36
如何将它存储在bash中的dword/qword中?我相信,你不能在bash中控制它。 – anishsane 2014-10-07 05:20:06
好的,那我怎么可以把'FFFFFCE3' coueld转换成'-797'而不是'4294966499'。我想在检查十六进制的第一个字符,如果它是'F',填写数字来产生这个:'0xFFFFFFFFFFFFFCE3'。你怎么看?谢谢! – harrison4 2014-10-07 06:20:07