[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