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

#1
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
 
#3
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.
 
#4
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
}
 
#5
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"
 
#6
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
 
Arriba