С++ cout шестнадцатеричные значения?

Я хочу делать:

int a = 255; 
cout << a;

и он показывает FF на выходе, как бы я это сделал?

Ответ 2

std::hex определяется в <ios>, который включен <iostream>. Но для использования таких вещей, как std::setprecision/std::setw/std::setfill/etc, вы должны включить <iomanip>.

Ответ 3

Чтобы манипулировать потоком для печати в шестнадцатеричном виде, используйте манипулятор hex:

cout << hex << a;

По умолчанию шестнадцатеричные символы выводятся в нижнем регистре. Чтобы изменить его на верхний регистр, используйте манипулятор uppercase:

cout << hex << uppercase << a;

Чтобы впоследствии изменить вывод на нижний регистр, используйте манипулятор nouppercase:

cout << nouppercase << b;

Ответ 4

Если вы хотите напечатать одно шестнадцатеричное число, а затем вернуться к десятичному числу, вы можете использовать это:

std::cout << std::hex << num << std::dec << std::endl;

Ответ 5

Я понимаю, что это не то, о чем попросил ОП, но я все же думаю, что стоит указать, как это сделать с помощью printf. Я почти всегда предпочитаю использовать его поверх std:: cout (даже без предыдущего фона C).

printf("%.2X", a);

'2' определяет точность, 'X' или 'x' определяет регистр.

Ответ 6

Существуют различные типы флагов и масок, которые вы можете использовать. Для получения дополнительной информации см. 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;
}

Ответ 7

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

Это объединяет ответ Грега Хьюгилла и информацию из другого вопроса.