Pasar de hexadecimal a decimal en 8051(nº de 2 bytes)

muy buenas! el tema es que se realizar un programa que realice la conversion de hexadecima a decimal siempre que el numero no exceda de 64h. La cuestion es que me gustaria realizar uno q transformadorrme numeros como 1ED y similares. Estoy encajonado y no se me ocurre como hacerlo! Me podrian echar una mano? Gracias
 
Estoy trabajando en un proyecto, y no me quiero entretener mucho con este tema. Les agradeceria si alguien me podria poner un ejemplo a ayudarme para realizar un programa para pasar un numero HEXADECIMAL a DECIMAL en C.

Querria pasar por ejemplo 0x1F y que me dara resultado: 31

De 0x10 en hexadecimal que me lea 16 en decimal, y asi con todos los numeros.

Muchisimas gracias.
 
Esta funcion convierte de hexa a bcd. Con solo cambiar los tamaños de las variables se puede alcanzar mayor rango. Tengo varias rutinas de este tipo en asembler para el 8051. Espero q les sea util.

Código:
int conversion (int dato){               //dato = dato a convertir
unsigned char indice;
int resultado, entero, resto;
if (dato>=10){
	while (dato>=10){
		entero = dato / 10;
		resto=dato - (entero*10);
		resto=resto<<indice;
		resultado|=resto;
		indice+=4;
		dato=entero;
		}
	entero=entero<<indice;
	resultado|=entero;
	}
else resultado=dato;
return resultado;                        //resultado de conversion
}
 
Hola, andaba por aqui y me topé con el codigo. Lo corrí tal cual pero no funcionó, le hice unas pequeñas modificaciones y quedó perfecto. Quedó de la siguiente manera:

int conversion (int dato){ //dato = dato a convertir
unsigned char indice=0;
int resultado, entero, resto;
resultado=0;
if (dato>=10){
while (dato>=10){
entero = dato / 10;
resto=dato - (entero*10);
resto=resto<<indice;
resultado|=resto;
indice=4;
dato=entero;
}
entero=entero<<4;
resultado|=entero;
}
else resultado=dato;
return resultado; //resultado de conversion
}

solo inicialice las variables en cero y modifiqué el corrimiento "indice"
 
Primero busca cada nible, segun la posición de peso (unidad, decena, centena...) a cada una le corresponde un valor Dec, que luego procederas a sumar para ir configurando el numero definitivo...
ve este ejemplo:
Convertir 5AFh a Dec usando tablas.
500h ---> 1280d
0A0 ---> 160d
00F ---> 15d
5AFh ---> 1455d

Fijate que tienes que escanear el nible o digito y saber su valor con posición incluido en una gran tabla, lo que procede luego es Sumar en decimal todo el resultado almacenado en buffer.

Espero te sirva...
José Czwienczek
 
Atrás
Arriba