9.5 Conversores
Obtener
el equivalente hexadecial de un número entero sin signo: se aceptan
sucesivas entradas numéricas por el teclado terminadas por intro hasta que se
pulsa el carácter "0" (ASCII 48). El programa utiliza una
función recursiva para obtener sucesivamente los diversos caracteres que
componen la representación hexadecimal. Puesto que se utiliza un unsigned
int, el número proporcionado no debe exceder la capacidad de
representación de este tipo (
2.2.4).
#include <iostream.h>
using namespace std;
const char* hexStr = "0123456789abcdef";
void intToHex (unsigned int);
int main() { // ====================
unsigned int x;
do {
cout << "\n\nIntroduzca un numero+Intro (0 para terminar): " << endl;
cin >> x;
cout << "Equivalente hexadeciaml de " << x << " : ";
intToHex(x);
} while (x != 0);
return 0;
}
void intToHex (unsigned int num) { // Funcion recursiva
int digit = num/16;
if (digit) intToHex(digit);
cout << hexStr[num % 16];
}
Resultados obtenidos con diversos valores:
Introduzca un numero+Intro (0 para terminar):
128
Equivalente hexadeciaml de 128 : 80
Introduzca un numero+Intro (0 para terminar):
3250
Equivalente hexadeciaml de 3250 : cb2
Introduzca un numero+Intro (0 para terminar):
112448
Equivalente hexadeciaml de 112448 : 1b740