| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
erfurby Cdt

Registrado: 22 Feb 2005Mensajes: 13
|
Publicado: Mar 22 Mar, 2005 12:10 pm Asunto: Funcion que convierta de Hex a decimal, existe predefinida? |
|
|
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 |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Mar 22 Mar, 2005 5:03 pm Asunto: |
|
|
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 |
|
 |
LordNemesis Master


Registrado: 31 Dic 2003Mensajes: 340Ubicación: México
|
Publicado: Mar 22 Mar, 2005 6:18 pm Asunto: |
|
|
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 |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Mar 22 Mar, 2005 11:19 pm Asunto: |
|
|
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 |
|
 |
erfurby Cdt

Registrado: 22 Feb 2005Mensajes: 13
|
Publicado: Lun 04 Abr, 2005 7:47 am Asunto: |
|
|
Muchas gracias a todos.......  |
|
| Volver arriba |
|
 |
Cesar C. Salazar Gonzalez Master


Registrado: 01 Oct 2002Mensajes: 2155Ubicación: San Cristóbal de Las Casas, Chiapas
|
Publicado: Lun 04 Abr, 2005 8:59 am Asunto: |
|
|
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);
}
//---------------------------------------------------------------------------
|
_________________
 |
|
| Volver arriba |
|
 |
nuno Cmdr

Registrado: 10 Feb 2003Mensajes: 143Ubicación: Córdoba - Argentina
|
Publicado: Lun 04 Abr, 2005 9:28 pm Asunto: |
|
|
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 |
|
 |
|