Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

Funcion que convierta de Hex a decimal, existe predefinida?

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: Funcion que convierta de Hex a decimal, existe predefinida? Responder citando

Existe alguna función en alguna librería que convierta hex a decimal.
Mejor aún si la funcion recibe el parametro hex como array de char.
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

creo que existe una HexaToDec();

prtro no me ecurdo bien, ahora estoy en el trabajo, pero a la noche me conecto y le confirmo, sino de ultima te paso una que hice yo.

Saludos!!
_________________
Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Hola....

Aqui te pongo un link donde vienen algoritmos que t epueden servir para conversion de bases, incluso estan en C, espero te ayuden....

http://articulos.conclase.net/numeracion/numeracion.html
_________________
Dirección Municipal de Informática
H. Ayuntamiento de Tijuana
Arriba Lopez Obrador !!!
Los Mexicanos Merecemos Respeto !!!
Volver arriba
Ver perfil de usuario Enviar mensaje privado Visitar sitio web del autor MSN Messenger
Mensaje    Asunto: Responder citando

Aqui te paso una funcion para pasar de hexadecimal a decimal

// cabecera de funciones

AnsiString Hexatobin(char car);
AnsiString Hexatodec(AnsiString valorhexa);


// desarrollo de funciones

AnsiString Hexatodec(AnsiString valorhexa)
{
AnsiString binario=""; // valor de la variable valorhexa convertida a binario.
long int decimal=0; // valor hexa convertido a decimal.
char *valor; // variable para guardar el valorhexa pero en formato char.

int tamanio=strlen(valorhexa.c_str())+1;
valor=new char [tamanio];
strcpy(valor,valorhexa.c_str());

for(int i=0;i<tamanio;i++)
binario+=Hexatobin(valor[i]);
delete []valor;

long int potencia=binario.Length();// para saber a que potencia tengo que elevar cuando convierto de binario a decimal. (complemento a la base -1)
char *valorbinario=new char[strlen(binario.c_str())+1]; // convierto de AnsioString a char para poder preguntar por la posicion.
strcpy(valorbinario,binario.c_str());

for(int i=0;i<binario.Length();i++)
{
if(valorbinario[i]=='1')
decimal+=1*pow(2,potencia-1);
else
decimal+=0*pow(2,potencia-1);
potencia--;
}
delete []valorbinario;
return AnsiString(decimal);

}
////////////////////////////////////////////
AnsiString Hexatobin(char car)
{
AnsiString binario=""; // valor Hexadecimal transformado a binario.
if(car!='\0')
{
if(car == '0')
binario+="0000";
if(car == '1')
binario+="0001";
if(car == '2')
binario+="0010";
if(car == '3')
binario+="0011";
if(car == '4')
binario+="0100";
if(car == '5')
binario+="0101";
if(car == '6')
binario+="0110";
if(car == '7')
binario+="0111";
if(car == '8')
binario+="1000";
if(car == '9')
binario+="1001";
if(car == 'A')
binario+="1010";
if(car == 'B')
binario+="1011";
if(car == 'C')
binario+="1100";
if(car == 'D')
binario+="1101";
if(car == 'E')
binario+="1110";
if(car == 'F')
binario+="1111";
}
return binario;
}
_________________
Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

Muchas gracias a todos....... Laughing
Volver arriba
Ver perfil de usuario Enviar mensaje privado MSN Messenger
Mensaje    Asunto: Responder citando

Me dio duda, de la funcion,
nuno escribió:
creo que existe una HexaToDec();Saludos!!

pero al parecer no existe, pero ya la invente, jejeje


pon dentro de un Form, 1 Edit, y 1 Label
copias esto y listo

Código:
//convertir de Hexadecimal a Decimal
int HexADec(AnsiString Cadena)
{
    int Resultado=0;
    int valor=0;
    int Potencia =1;
    int Base = 16;
    for(int pos=Cadena.Length();pos>0;pos--)
    {
        switch(Cadena[pos])
        {
            case 'A':
            case 'a':
                valor = 10 * Potencia;
                break;
            case 'B':
            case 'b':
                valor = 11 * Potencia;
                break;
            case 'C':
            case 'c':
                valor = 12 * Potencia;
                break;
            case 'D':
            case 'd':
                valor = 13 * Potencia;
                break;
            case 'E':
            case 'e':
                valor = 14 * Potencia;
                break;
            case 'F':
            case 'f':
                valor = 15 * Potencia;
                break;
            default:
                valor = StrToInt(Cadena[pos]) * Potencia;
                break;
        }
        Potencia*= Base; //Incremento a 16;
        Resultado+=valor;
    }
    return (Resultado);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    this->Label1->Caption = HexADec(this->Edit1->Text);
}
//---------------------------------------------------------------------------

_________________
Cool
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mensaje    Asunto: Responder citando

no recuerdo bien pero una de las dos la trae el builder por defecto

HexaToDec() ò DecToHexa(), de eso si estoy seguro

saludos!!!!
_________________
Siempre hay que tratar de ser el mejor, pero nunca creerse el mejor (Juan Manuel Fangio)
Volver arriba
Ver perfil de usuario Enviar mensaje privado Enviar email MSN Messenger
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.