2014-10-06 1 views
1

У меня есть номер шестигранного:Как преобразовать шестнадцатеричный номер в десятичный, сохраненный в DWORD вместо QWORD?

FFFFFCE3 

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

printf "%d" "0xFFFFFCE3" 

и выходы:

4294966499 

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

-797 
+0

Спасибо за ответ, но, боюсь, я уже искал это. Не могли бы вы разместить какой-либо пример или, возможно, ссылку на информацию? – harrison4

+0

Как вы храните его в dword/qword в bash? Я полагаю, вы не можете контролировать это в bash. – anishsane

+0

Итак, как я мог бы сделать, что '' FFFFFCE3'' будет преобразован в '-797' вместо' 4294966499'. Я решил проверить первый символ шестнадцатеричного кода, и если это 'F', заполните номер, чтобы сгенерировать это:' 0xFFFFFFFFFFFFFCE3'. Как вы думаете? Благодаря! – harrison4

ответ

2

истолковать шестнадцатеричной строки в виде 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

Большое спасибо, Джон! – harrison4

Смежные вопросы