Autor Tema: Como convertir un numero hexadecimal a un decimal string  (Leído 4124 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Como convertir un numero hexadecimal a un decimal string
« en: 05 de Agosto de 2009, 18:19:30 »
Hola, alguien me puede decir como puedo convertir un numero hexadecimal a un string decimal ?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #1 en: 05 de Agosto de 2009, 19:59:04 »
Utilizando la función sprintf, y los parámetros %u o %lu

char String[];
int Num;

sprintf(String,"%u",Num);


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado RedPic

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 5544
    • Picmania by Redraven
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #2 en: 06 de Agosto de 2009, 03:00:14 »
Medusa ¿partes de un string hex? ... del estilo de char stringhex[]="F01A"; ... ¿y deseas obtener un string dec? ... del estilo de char stringdec[]="61466"; En caso afirmativo ¿qué longitud tendría el stringhex?



Contra la estupidez los propios dioses luchan en vano. Schiller
Mi Güeb : Picmania

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #3 en: 06 de Agosto de 2009, 11:36:02 »
Hola RedPic el dato Hex es de 8bits  :lol:,

Gracias Suky, ya tengo el resultado deseado  :-/  :-/, pero ahora tengo otro problema   :( , quiero comparar tres datos tipo estring con otros tres string pero no logro hacer correctamente, me pueden dar alguna sugerencia.

Aqui esta mi codigo,
Código: [Seleccionar]
char Buffer1[3];
char Buffer2[3];
char Buffer3[3];
char Buffer_EEprom1[3];
char Buffer_EEprom2[3];
char Buffer_EEprom3[3];

sprintf(buffer1,"%u",sec);
sprintf(buffer2,"%u",min);
sprintf(buffer3,"%u",hrs);

for (i = 0; i< 2; i++) Buffer_EEprom1[i] = read_eeprom(210+i);
for (i = 0; i< 2; i++) Buffer_EEprom2[i] = read_eeprom(212+i);
for (i = 0; i< 2; i++) Buffer_EEprom3[i] = read_eeprom(214+i);

if ((!strcmp(Buffer_EEprom1,Buffer1))& (!strcmp(Buffer_EEprom2,Buffer2)) &(!strcmp(Buffer_EEprom3,Buffer3)))
Alarma = 1;
else
        Alarma = 0;

sec,min,hrs so datos que obtengo de un RTC, y los datos con los cuales quiero comparar estan almacenados en la eeprom a partir de la direccion 210

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #4 en: 06 de Agosto de 2009, 11:57:10 »
Debes poner:
Código: C
  1. if ((!strcmp(Buffer_EEprom1,Buffer1))&& (!strcmp(Buffer_EEprom2,Buffer2)) &&(!strcmp(Buffer_EEprom3,Buffer3)))

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #5 en: 06 de Agosto de 2009, 12:30:29 »
Citar
if ((!strcmp(Buffer_EEprom1,Buffer1))&& (!strcmp(Buffer_EEprom2,Buffer2)) &&(!strcmp(Buffer_EEprom3,Buffer3)))

Hola Suky,

Con esta modificacion tampoco funciona, la cpu salta esta instruccion y no lo ejecuta,


Código: [Seleccionar]
if ((!strcmp(Buffer_EEprom1,Buffer1))&& Pero cuado hago la comorarcion de un solo dato todo funciona OK,



cual podria ser mi error?

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #6 en: 06 de Agosto de 2009, 12:55:21 »
En las conversiones colocalo así:

sprintf(buffer1,"%02u",sec);
sprintf(buffer2,"%02u",min);
sprintf(buffer3,"%02u",hrs);


De esa manera siempre el Buffer quedará: por ejemplo para hrs=2 --> [0,2,\n]

Y si el buffer que almacena los datos recibidos de la memoria queda así, no debería haber problemas  :?

Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado Medusa

  • PIC18
  • ****
  • Mensajes: 252
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #7 en: 06 de Agosto de 2009, 13:11:52 »
  :-/  :-/  :-/ Funciona... gracias :mrgreen:

Desconectado edp

  • PIC10
  • *
  • Mensajes: 8
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #8 en: 08 de Septiembre de 2009, 14:37:57 »
Muy buenas tardes, estoy tratando de hacer una conversión de un hex a un char como se comenta anteriormente, pero mi problema es que solo me convierte numeros de 8 bits si es mayor tengo problemas:

char  texto[];
int DATO;
dato=255;
sprintf(texto, "%u",dato); // Converts adc to text
texto[8] = '\0';
glcd_text57(0,16,texto,2,1);

Donde meto la pata? :-/ :-/ :-/ :-/ :-/ :-/ Muchas gracias

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #9 en: 08 de Septiembre de 2009, 14:42:11 »
Utiliza el parámetro %lu, y es recomendable que indiques el largo del string, por ejemplo para 16bit, usa Texto[6];


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado edp

  • PIC10
  • *
  • Mensajes: 8
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #10 en: 08 de Septiembre de 2009, 14:54:35 »
que rapido en contestar, acabo de probar con %lu y me sale el siguiente error. printf format type is invalid

char texto[8];
int DATO;
dato=257;
sprintf(texto, "%lu",dato); // Converts adc to text
texto[8] = '\0';
glcd_text57(0,16,texto,2,1);

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #11 en: 08 de Septiembre de 2009, 14:58:00 »
No, dato debe ser de 16 bits. (int16 Dato)
No contesto mensajes privados, las consultas en el foro

Desconectado edp

  • PIC10
  • *
  • Mensajes: 8
Re: Como convertir un numero hexadecimal a un decimal string
« Respuesta #12 en: 08 de Septiembre de 2009, 15:03:27 »
Muchisimas gracias :) :) :), llevaba 2 horas sin conseguir hacer la conversión, ahora sigo peleando con el GLCD.

Saludos


 

anything