Как преобразовать шестнадцатеричное число в десятичное, хранящееся в 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-разрядное целое число со знаком и печатает его.