[C con Clase] dar formato hexadecimal a la salida estandar mediante st::cout

Steven Davidson srd4121 en njit.edu
Lun Ago 17 18:10:28 CEST 2009


Hola Bien1,

bien1 wrote:
> buenas tardes.
> teniendo el codigo.
> 
> int entero = 200; //que en hex seria 0xC8
> cout << "el numero vale: " << (hex?) entero << endl;
> 
> no quiero usar esto:
> 
> printf ("%x", entero);
> 
> como hago para que el cout slaga el numero hex con el formato xFFF.
> estoy haciendo un programa que muestra la tabla ascii con los valores
> correspondientes y quiero que salga en hex, el codigo asociado al
> caracter.

Sugiero usar los manipuladores de canales que se definen en <iomanip>. 
Por ejemplo,

#include <iostream>
#include <iomanip>

int main()
{
   int entero = 200; //que en hex seria 0xC8
   std::cout << "el numero vale: " << std::hex << entero << endl;

   return 0;
}

También puedes "configurar" el canal 'cout' para que muestre los datos 
en hexadecimal de la siguiente manera:

cout.setf( ios::hex );

Si quieres que la 'x' aparezca en mayúsculas, entonces activa el 
banderín 'uppercase'. Por ejemplo,

cout << "el numero vale: " << uppercase << hex << entero << endl;

o

cout.setf( ios::hex | ios::uppercase );

Si no quieres que aparezca "0x", entonces despeja el banderín 
'showbase'. Por ejemplo,

cout << "el numero vale: " << noshowbase << uppercase << hex << entero 
<< endl;

o

cout.unsetf( ios::showbase );
cout.setf( ios::hex | ios::uppercase );


Puedes consultar el apéndice D de nuestro curso de C++ para más 
información acerca de los canales estándares. El enlace que te interesa 
es: http://c.conclase.net/curso/index.php?cap=903b#APD_ios


Espero que esto te ayude.

Steven





Más información sobre la lista de distribución Cconclase