Respostas:
Usar:
#include <iostream>
...
std::cout << std::hex << a;
Existem muitas outras opções para controlar a formatação exata do número de saída , como zeros à esquerda e maiúsculas / minúsculas.
ios::fmtflags f(cout.flags());
e restaurá-lo com out.flags(f);
.
std::cout.flags(f);
Para manipular o fluxo para imprimir em hexadecimal, use o hex
manipulador:
cout << hex << a;
Por padrão, os caracteres hexadecimais são impressos em minúsculas. Para alterá-lo para maiúsculas, use o uppercase
manipulador:
cout << hex << uppercase << a;
Para alterar posteriormente a saída para minúscula, use o nouppercase
manipulador:
cout << nouppercase << b;
nouppercase
indo para mudar a parte traseira de saída para decimal?
Entendo que não é isso que o OP solicitou, mas ainda acho que vale a pena apontar como fazê-lo com o printf. Eu quase sempre prefiro usá-lo sobre std :: cout (mesmo sem o fundo C anterior).
printf("%.2X", a);
'2' define a precisão, 'X' ou 'x' define maiúsculas e minúsculas.
printf("hello\n")
é equivalente a fprintf(stdout, "hello\n")
. Mais útil, você pode passar stdout
(ou stdin
, ou stderr
) para uma função que recebe um FILE*
argumento.
Existem diferentes tipos de bandeiras e máscaras que você também pode usar. Consulte http://www.cplusplus.com/reference/iostream/ios_base/setf/ para obter mais informações.
#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
fornece a formatação hexadecimal, mas é uma opção com estado, o que significa que você precisa salvar e restaurar o estado ou isso afetará toda a saída futura.
Ingenuamente, retornar a isso std::dec
só é bom se for onde as bandeiras estavam antes, o que pode não ser o caso, principalmente se você estiver escrevendo uma biblioteca.
#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
Isso combina a resposta e as informações de Greg Hewgill de outra pergunta .
Use std::uppercase
e std::hex
para formatar a variável inteira a
a ser exibida no formato hexadecimal.
#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;
alterá-lo novamente.