Поскольку заголовок предполагает, что я пытаюсь преобразовать шестнадцатеричные числа, такие как 0x320000dd, в десятичные числа. Мой код работает только для положительных чисел, но не работает, когда речь идет о шестнадцатеричных числах, которые представляют отрицательные десятичные числа. Вот выдержка из моего кода:правильное преобразование шестнадцатеричного числа в десятичном числе (также отрицательные)
cin>>hex>> x;
unsigned int number = x;
int r = number & 0xffffff;
Мой вход alreay в шестнадцатеричном, и компьютер преобразует его автоматически в целое число. То, что я пытаюсь сделать, это получить операнд шестнадцатеричного числа, так что последние 24 бит. Можете ли вы помочь мне заставить мой код работать с отрицательными значениями: 0x32fffdc9 или 0x32ffffff? Большое спасибо!
EDIT:
Я хотел бы мой выход будет: 0x32fffdc9 -> -567 или 0x32ffffff -> -1
так просто простые значения десятичного, но вместо этого он дает мне 16776649 и 16777215 для верхних примеров.
@kiner_shah hex is std :: hex скорее всего. – Borgleader
@ Борлидер, понял! :-) –
О, извините, я пропустил, чтобы сказать вам, что я включил 'using namespace std;' в моем коде. поэтому std :: hex ничего не изменит, не так ли? :) – Jennan