【问题标题】:How to convert hex number to decimal stored in a DWORD instead QWORD?如何将十六进制数转换为存储在 DWORD 而不是 QWORD 中的十进制数?
【发布时间】:2014-11-30 21:36:59
【问题描述】:

我有十六进制数:

FFFFFCE3

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

printf "%d" "0xFFFFFCE3"

然后输出:

4294966499

但是如果我将它存储在一个 QWORD 中,这就是结果。 我想知道如何将它存储在 DWORD 中,所以输出将是我期望的负数:

-797

【问题讨论】:

  • 感谢您的回复,但恐怕我已经搜索过了。您可以发布任何示例,或者可能是信息的链接吗?
  • 如何在 bash 中将其存储在 dword/qword 中?我相信,你无法在 bash 中控制它。
  • 好的,那我怎样才能将FFFFFCE3 转换为-797 而不是4294966499。我想检查十六进制的第一个字符,如果是F,请填写数字以生成:0xFFFFFFFFFFFFFCE3。你怎么看?谢谢!
  • 用两个例子展示你的代码(一个 .sh 脚本)。我没有得到-797 输出。

标签: python bash hex decimal dword


【解决方案1】:

要将十六进制字符串解释为 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&lt;2**31 else x-2**32'

    这会将 无符号 32 位整数转换为 有符号 32 位整数并打印出来。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-26
    • 1970-01-01
    • 2013-05-31
    • 2018-07-04
    • 2016-07-05
    • 2014-04-16
    • 1970-01-01
    相关资源
    最近更新 更多