Quiero hacer:
int a = 255; 
cout << a;
y que muestre FF en la salida, ¿cómo haría esto?
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.
cout << hex << a << dec;cambiarlo nuevamente.ios::fmtflags f(cout.flags());y restaurarlo conout.flags(f);.std::cout.flags(f);std::hexse define en el<ios>que está incluido por<iostream>. Pero para usar cosas comostd::setprecision/std::setw/std::setfill/ etc. tienes que incluir<iomanip>.fuente
Para manipular la secuencia para imprimir en hexadecimal, use el
hexmanipulador:Por defecto, los caracteres hexadecimales se muestran en minúsculas. Para cambiarlo a mayúsculas, use el
uppercasemanipulador:Para luego cambiar la salida a minúsculas, use el
nouppercasemanipulador:fuente
nouppercaseVa a cambiar la salida a decimal?Si desea imprimir un solo número hexadecimal y luego volver al decimal, puede usar esto:
fuente
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).
'2' define la precisión, 'X' o 'x' define el caso.
fuente
printf("hello\n")es equivalente afprintf(stdout, "hello\n"). Más útilmente, puede pasarstdout(ostdin, ostderr) a una función que toma unFILE*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.
fuente
std::hexle 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::decsolo es bueno si es donde estaban las banderas antes, lo que puede no ser el caso, especialmente si está escribiendo una biblioteca.Esto combina la respuesta e información de Greg Hewgill de otra pregunta .
fuente
Utilice
std::uppercaseystd::hexpara formatear la variable enteraaque se mostrará en formato hexadecimal.fuente