Páginas

NIMADRES

Convertir números decimales a Hexadecimales

El sistema numérico hexadecimal o sistema hexadecimal (a veces abreviado como Hex), es un sistema de numeración que emplea 16 símbolos. Su uso actual está muy vinculado a la informática y ciencias de la computación, pues los computadores suelen utilizar el byte u octeto como unidad básica de memoria.
Según el teorema general de la numeración posicional, equivale al número en base 16 , dos dígitos hexadecimales corresponden exactamente a un byte.
En principio, dado que el sistema usual de numeración es de base decimal y, por ello, sólo se dispone de diez dígitos, se adoptó la convención de usar las seis primeras letras del alfabeto latino para suplir los dígitos que nos faltan. El conjunto de símbolos sería, por tanto, el siguiente:


Bueno como hace mucho que ya no subo programas en C++ hoy se me ocurrió hacer uno que tal vez muchos de ustedes ya saben o tienen una idea de como se hace, pero para los que aun no saben como hacerlo pues aquí les tengo un ejemplo de como realizar un convertidor de números decimales a hexadecimales.

#include <iostream>
#include <cstring>
#include <sstream>
#include <cstdlib>

using namespace std;

void convertir(string &hex,stringstream &stream, int numero){
    int residuo;
    if(numero == 0 || numero == 1 || numero == 2 || numero == 3||
       numero == 4 || numero == 5 || numero == 6 || numero == 7||
       numero == 8 || numero == 9){
        stream << numero;
    }
    else{
        residuo = numero%16;
        numero = numero/16;
        convertir(hex,stream,numero);
        stream << residuo;
    }
    hex = stream.str();
}
string hexadecimal(string c){
     int i = 0;
     string hex = "";
     int numero;
     numero = atoi(c.c_str());//converir de String a Int
     stringstream stream;
     convertir(hex,stream,numero);
     c = hex;
     hex = "";
     do{
         if(c[i] =='1' && c[i+1] == '0'){
             i += 2;
             hex += 'A';
         }
         else if(c[i] == '1' && c[i+1] == '1'){
             i += 2;
             hex += 'B';
         }
         else if(c[i] == '1' && c[i+1] == '2'){
             i += 2;
             hex += 'C';
         }
         else if(c[i] == '1' && c[i+1] == '3'){
             i += 2;
             hex += 'D';
         }
         else if(c[i] == '1' && c[i+1] == '4'){
             i += 2;
             hex += 'E';
         }
         else if(c[i] == '1' && c[i+1] == '5'){
             i += 2;
             hex += 'F';
         }
         else
             switch(c[i++]){
                 case '0': hex += '0'; break;
                 case '1': hex += '1'; break;
                 case '2': hex += '2'; break;
                 case '3': hex += '3'; break;
                 case '4': hex += '4'; break;
                 case '5': hex += '5'; break;
                 case '6': hex += '6'; break;
                 case '7': hex += '7'; break;
                 case '8': hex += '8'; break;
                 case '9': hex += '9'; break;
             }
     }while(c[i] != '\0');
     return "0x" + hex; 
}
int main(){
    int i = 0;
    string decimal;
    int numero;
    cout << "Introduce el numero decimal: ";
    getline(cin,decimal);
    decimal = hexadecimal(decimal);
    cout << "El numero en Hexadecimal equivale a: " <<decimal;
    cin.get();
    return 0;
}
Este programa utiliza una función recursiva dentro de otra función en a cual se transforma primeramente todos los números naturales de base 10 en números base 16, después los números que sean mas de 9 y menos de 16 los transforma en letras y al final solo lo retorna para imprimir o guardar en otra variable.

Aqui les dejo una pagina donde lo hace automáticamente:
http://www.disfrutalasmatematicas.com/numeros/binario-decimal-hexadecimal-conversor.html



1 comentario:

  1. Prueba con este:
    #include
    #include
    using namespace std;
    char cad2[10], cad1[10];


    void convertir(int num)
    {string hex;
    if(num>0){
    if(num%16==0)hex='0';
    if(num%16==1)hex='1';
    if(num%16==2)hex='2';
    if(num%16==3)hex='3';
    if(num%16==4)hex='4';
    if(num%16==5)hex='5';
    if(num%16==6)hex='6';
    if(num%16==7)hex='7';
    if(num%16==8)hex='8';
    if(num%16==9)hex='9';
    if(num%16==10)hex='A';
    if(num%16==11)hex='B';
    if(num%16==12)hex='C';
    if(num%16==13)hex='D';
    if(num%16==14)hex='E';
    if(num%16==15)hex='F';
    convertir(num/16);
    cout<>num;
    convertir(num);
    return 0;
    }

    ResponderEliminar