Как преобразовать шестнадцатеричное число в десятичное, хранящееся в DWORD вместо QWORD?

У меня есть шестнадцатеричное число:

FFFFFCE3

Тогда, если я пытаюсь преобразовать его в десятичное число. Я сделал:

printf "%d" "0xFFFFFCE3"

И выводы:

4294966499

Но это результат, если я храню его в QWORD. Я хочу знать, как сохранить его в DWORD, поэтому результат будет отрицательным числом, которое я ожидаю:

-797

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<2**31 else x-2**32'

    Это преобразует 32-разрядное целое число без знака в 32-разрядное целое число со знаком и печатает его.

Другие вопросы по тегам