Я хочу делать:
int a = 255;
cout << a;
и он показывает FF на выходе, как бы я это сделал?
Использование:
#include <iostream>
...
std::cout << std::hex << a;
Есть много других опций для контроля точного форматирования выходного числа , таких как начальные нули и верхний / нижний регистр.
cout << hex << a << dec;
изменить его обратно.ios::fmtflags f(cout.flags());
и восстановить его с помощьюout.flags(f);
.std::cout.flags(f);
std::hex
определяется в<ios>
который входит<iostream>
. Но чтобы использовать такие вещи, какstd::setprecision/std::setw/std::setfill
/ etc, вы должны включить<iomanip>
.источник
Чтобы манипулировать потоком для печати в шестнадцатеричном формате, используйте
hex
манипулятор:По умолчанию шестнадцатеричные символы выводятся в нижнем регистре. Чтобы изменить его на прописные, используйте
uppercase
манипулятор:Чтобы позже изменить вывод обратно в нижний регистр, используйте
nouppercase
манипулятор:источник
nouppercase
изменить выход обратно на десятичную?Если вы хотите напечатать одно шестнадцатеричное число, а затем вернуться к десятичному числу, вы можете использовать это:
источник
Я понимаю, что это не то, о чем просил OP, но я все же думаю, что стоит указать, как это сделать с помощью printf. Я почти всегда предпочитаю использовать его вместо std :: cout (даже без предыдущего C-фона).
«2» определяет точность, «X» или «x» определяет регистр.
источник
printf("hello\n")
эквивалентноfprintf(stdout, "hello\n")
. Более полезно, вы можете передатьstdout
(илиstdin
, илиstderr
) функцию, которая принимаетFILE*
аргумент.Существуют различные виды флагов и масок, которые вы также можете использовать. Пожалуйста, обратитесь к http://www.cplusplus.com/reference/iostream/ios_base/setf/ для получения дополнительной информации.
источник
std::hex
возвращает вам шестнадцатеричное форматирование, но это опция с сохранением состояния, то есть вам нужно сохранять и восстанавливать состояние, иначе это повлияет на весь последующий вывод.Наивное переключение обратно
std::dec
хорошо только тогда, когда флаги были там, что может быть не так, особенно если вы пишете библиотеку.Это объединяет ответ Грега Хьюджилла и информацию из другого вопроса .
источник
Используйте
std::uppercase
иstd::hex
для форматирования целочисленной переменнойa
для отображения в шестнадцатеричном формате.источник