Здесь нет преобразования типов между шестнадцатеричным и десятичным. Внутренне ваш номер будет храниться в двух дополнительных (двоичное представление) независимо от того, было ли оно прочитано как шестнадцатеричное или десятичное число. Преобразование из строки dec / hex в целое число и наоборот происходит, когда число вводится / выводится.
С std::hex
вы указываете потоку, что говорите потоку изменить его числовую базу по умолчанию дляцелочисленный ввод / вывод. Без этого по умолчанию используется десятичное число. Так что если вы делаете это только для std::cin
, то он читает числа в шестнадцатеричном формате, но std::cout
по-прежнему выводит десятичные числа. Если вы хотите, чтобы оно также изменило свою базу на шестнадцатеричное, вы должны сделать то же самое с std::cout
:
std::cout << std::hex << "Your hexadecimal input: " << number << std::endl;