Respuestas:
Utilizar:
#include <iostream>
...
std::cout << std::hex << a;
Existen muchas otras opciones para controlar el formato exacto del número de salida , como los ceros iniciales y las mayúsculas / minúsculas.
ios::fmtflags f(cout.flags());
y restaurarlo con out.flags(f);
.
std::cout.flags(f);
Para manipular la secuencia para imprimir en hexadecimal, use el hex
manipulador:
cout << hex << a;
Por defecto, los caracteres hexadecimales se muestran en minúsculas. Para cambiarlo a mayúsculas, use el uppercase
manipulador:
cout << hex << uppercase << a;
Para luego cambiar la salida a minúsculas, use el nouppercase
manipulador:
cout << nouppercase << b;
nouppercase
Va a cambiar la salida a decimal?
Entiendo que esto no es lo que OP solicitó, pero sigo pensando que vale la pena señalar cómo hacerlo con printf. Casi siempre prefiero usarlo sobre std :: cout (incluso sin un fondo C anterior).
printf("%.2X", a);
'2' define la precisión, 'X' o 'x' define el caso.
printf("hello\n")
es equivalente a fprintf(stdout, "hello\n")
. Más útilmente, puede pasar stdout
(o stdin
, o stderr
) a una función que toma un FILE*
argumento.
También puedes usar diferentes tipos de banderas y máscaras. Consulte http://www.cplusplus.com/reference/iostream/ios_base/setf/ para obtener más información.
#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
le da el formato hexadecimal, pero es una opción con estado, lo que significa que necesita guardar y restaurar el estado o afectará a todos los resultados futuros.
Cambiar ingenuamente a std::dec
solo es bueno si es donde estaban las banderas antes, lo que puede no ser el caso, especialmente si está escribiendo una 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
Esto combina la respuesta e información de Greg Hewgill de otra pregunta .
Utilice std::uppercase
y std::hex
para formatear la variable entera a
que se mostrará en 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;
cambiarlo nuevamente.