Как следует из заголовка, я пытаюсь преобразовать шестнадцатеричные числа, такие как 0x320000dd, в десятичные числа. Мой код работает только для положительных чисел, но не работает, когда речь идет о шестнадцатеричных числах, представляющих отрицательные десятичные числа. Вот отрывок из моего кода:
cin>>hex>> x;
unsigned int number = x;
int r = number & 0xffffff;
Мой ввод уже в шестнадцатеричном формате, и компьютер автоматически преобразует его в целое число. То, что я пытаюсь сделать, это получить операнд шестнадцатеричного числа, поэтому последние 24 бита. Можете ли вы помочь мне заставить мой код работать с отрицательными значениями, такими как: 0x32fffdc9 или 0x32ffffff? Большое спасибо!
РЕДАКТИРОВАТЬ:
Я хотел бы, чтобы мой вывод был: 0x32fffdc9 --> -567 или 0x32ffffff --> -1
так что только простые десятичные значения, но вместо этого они дают мне 16776649 и 16777215 для верхних примеров.
int
? вам, вероятно, нужно проверить бит знака (и выполнить преобразование) самостоятельно. - person apple apple   schedule 06.12.2016