Ответы:
Использование:
#include <iostream>
...
std::cout << std::hex << a;
Есть много других опций для контроля точного форматирования выходного числа , таких как начальные нули и верхний / нижний регистр.
ios::fmtflags f(cout.flags());и восстановить его с помощью out.flags(f);.
std::cout.flags(f);
Чтобы манипулировать потоком для печати в шестнадцатеричном формате, используйте hexманипулятор:
cout << hex << a;
По умолчанию шестнадцатеричные символы выводятся в нижнем регистре. Чтобы изменить его на прописные, используйте uppercaseманипулятор:
cout << hex << uppercase << a;
Чтобы позже изменить вывод обратно в нижний регистр, используйте nouppercaseманипулятор:
cout << nouppercase << b;
nouppercaseизменить выход обратно на десятичную?
Я понимаю, что это не то, о чем просил OP, но я все же думаю, что стоит указать, как это сделать с помощью printf. Я почти всегда предпочитаю использовать его вместо std :: cout (даже без предыдущего C-фона).
printf("%.2X", a);
«2» определяет точность, «X» или «x» определяет регистр.
printf("hello\n")эквивалентно fprintf(stdout, "hello\n"). Более полезно, вы можете передать stdout(или stdin, или stderr) функцию, которая принимает FILE*аргумент.
Существуют различные виды флагов и масок, которые вы также можете использовать. Пожалуйста, обратитесь к http://www.cplusplus.com/reference/iostream/ios_base/setf/ для получения дополнительной информации.
#include <iostream>
using namespace std;
int main()
{
int num = 255;
cout.setf(ios::hex, ios::basefield);
cout << "Hex: " << num << endl;
cout.unsetf(ios::hex);
cout << "Original format: " << num << endl;
return 0;
}
std::hex возвращает вам шестнадцатеричное форматирование, но это опция с сохранением состояния, то есть вам нужно сохранять и восстанавливать состояние, иначе это повлияет на весь последующий вывод.
Наивное переключение обратно std::decхорошо только тогда, когда флаги были там, что может быть не так, особенно если вы пишете библиотеку.
#include <iostream>
#include <ios>
...
std::ios_base::fmtflags f( cout.flags() ); // save flags state
std::cout << std::hex << a;
cout.flags( f ); // restore flags state
Это объединяет ответ Грега Хьюджилла и информацию из другого вопроса .
Используйте std::uppercaseи std::hexдля форматирования целочисленной переменной aдля отображения в шестнадцатеричном формате.
#include <iostream>
int main() {
int a = 255;
// Formatting Integer
std::cout << std::uppercase << std::hex << a << std::endl; // Output: FF
std::cout << std::showbase << std::hex << a << std::endl; // Output: 0XFF
std::cout << std::nouppercase << std::showbase << std::hex << a << std::endl; // Output: 0xff
return 0;
}
cout << hex << a << dec;изменить его обратно.