2009-10-25 10 views
9

Estoy tratando de generar el valor hexadecimal de un char y formatearlo de una manera agradable.C++ formato de número hexadecimal

requerido: 0x01 : value 0x1

Todo lo que puedo conseguir es: 00x1 : value 0x1 // o 0x1 si yo no uso iomanip

Aquí está el código que tengo, 'ch' fue declarado como un unsigned char. ¿Hay alguna otra forma de hacerlo que no sea verificar el valor y agregar manualmente un '0'?

cout << showbase; 
cout << hex << setw(2) << setfill('0') << (int) ch; 

Editar:

encontré una solución en línea:

cout << internal << setw(4) << setfill('0') << hex << (int) ch 

Respuesta

13
std::cout << "0x" << std::noshowbase << std::hex << std::setw(2) << std::setfill('0') << (int)ch; 

Desde setw almohadillas fuera a la izquierda del número impreso en general (después de aplicar showbase), showbase ISN No se puede usar en tu caso. En su lugar, imprima manualmente la base como se muestra arriba.

0

En uno de mis proyectos que hice esto:

ostream &operator<<(ostream &stream, byte value) 
{ 
    stream << "0x" << hex << (int)value; 
    return stream; 
} 

I surchaged el operador < < para la salida de corriente, y todo lo que era un byte se muestra en hexadecimal. byte es un typedef para char sin signo.

Cuestiones relacionadas