Ответы:
Использование:
#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;
изменить его обратно.