TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: Medusa en 03 de Mayo de 2010, 17:41:57

Título: Como comvertir Ascii a Hex
Publicado por: Medusa en 03 de Mayo de 2010, 17:41:57
Hola, necesito converir una cadena de caracteres ascii a su respectivo valor Hex:

Código: [Seleccionar]
Caracteres Ascii = "485C"

4 = 34
8 = 38
4 = 35
C = 43

Valor deseado Hex = "34 38  35 43" 

Alguien me podria decir como hacerlo??
Título: Re: Como comvertir Ascii a Hex
Publicado por: MLO__ en 03 de Mayo de 2010, 19:08:05
Hola.

Y no es solo cambiar el formato?
Título: Re: Como comvertir Ascii a Hex
Publicado por: gera en 03 de Mayo de 2010, 19:38:06
long num;
sscanf_s("485C", "%x", &num);

espero q te sirva, saludos!!
Título: Re: Como comvertir Ascii a Hex
Publicado por: Medusa en 04 de Mayo de 2010, 23:39:28
Gracias..
Título: Re: Como comvertir Ascii a Hex
Publicado por: ariznaf en 06 de Mayo de 2010, 06:54:37
¿Y esa función para qué compilador es?
En el manual del C CCS no la encuentro por ningún lado version (4.104).
Título: Re: Como comvertir Ascii a Hex
Publicado por: gera en 06 de Mayo de 2010, 13:45:42
Si no me equivoco es estandar de la libreria stdio.h. No estoy seguro si CCS la implementa, si no habria q usar otra como sscans, o sprintf.
saludos!
Título: Re: Como comvertir Ascii a Hex
Publicado por: ariznaf en 06 de Mayo de 2010, 17:04:46
Pues entonces va a ser que CCS no la implementa.

Sí que es standar en stdio, pero en un compilador ANSI C standar, CCS no lo es.
No he encontrado ninguna función scanf en el manual de CCS, así que me imagino que no las han implementado.

Otra cosa más que no me gusta ni un pelo de este compilador.
Título: Re: Como comvertir Ascii a Hex
Publicado por: bigluis en 09 de Mayo de 2010, 00:15:45
Ningun Microcontrolador trabaja con codigo ASCII, hex, decimal u octal, ellos sólo trabajan en binario. Es decir, que una cadena de caracteres ASCII no es nadamas que un arreglo de valores en binario, pero el compilador se encarga de realizar las respectivas conversiones del valor que nosotros escribamos a binario.

Por ejemplo:

Código: [Seleccionar]
char Caracter[] = "485C" ;
Es equivalente a
Código: [Seleccionar]
char Caracter[] ={0x34,0x38,0x35,0x43,0x0};
Es decir que si tu llamas a Caracter[3], que en este caso es C en ASCII sería 0x43 en hexadecimal.

si quieres pasar de ASCII a decimal simplemente tienes que restar la variable en ASCII menos 0x30 hexadecimal (el equivalente a 0 ASCII).

Código: [Seleccionar]
valor=Caracter[0]-'0';
ya que Caracter[0] es 4 en ASCII o 0x34 en hexadecimal el valor será igual a 0 decimal.