TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jasmsa20 en 20 de Septiembre de 2006, 17:51:22

Título: de byte a string
Publicado por: jasmsa20 en 20 de Septiembre de 2006, 17:51:22
estoy haciendo un programa con ccs y necesito una función que convierta una variable int o byte a string, ¿alguien sabría cual tengo que usar?
Título: Re: de byte a string
Publicado por: maunix en 20 de Septiembre de 2006, 17:59:39
estoy haciendo un programa con ccs y necesito una función que convierta una variable int o byte a string, ¿alguien sabría cual tengo que usar?

Un estandar de los compiladores C, es la de usar la funcion itoa()  que significa integer to ascii.

Debiera estar en stdlib , stdio o strings

Saludos
Título: Re: de byte a string
Publicado por: jfh900 en 20 de Septiembre de 2006, 19:57:26
Mas sencillo, usa la función printf(cCadena,"%u",nVar);, donde:

cCadena = String donde se depositará la conversión.
"%u" = Mascara de conversión (u=unsigned)
nVar = Variable númerica a convertir.

La ventaja de esta función es que permite convertir y formatear diversos tipos de variables, por ejemplo si queremos convertir una variable a Hexadecimal:

printf(Cadena,"%4X",nVar);

Conversión de un número a Ascii hexadecimal con 4 dígitos. Si consultas el manual trae una tabla con todas las conversiones posibles.

Un saludo
Título: Re: de byte a string
Publicado por: Nocturno en 21 de Septiembre de 2006, 02:49:54
Disculpa Jesús, ¿no es la funcion sprintf la que hace eso?
Título: Re: de byte a string
Publicado por: jfh900 en 21 de Septiembre de 2006, 10:05:15
Tienes razón, en parte. Me explico, en las nuevas versiones del compilador se soporta la función sprintf pero en las versiones antiguas no. No obstante se puede implementar de la siguiente forma mediante la función printf:

Código: CSS
  1. char string[20];
  2. byte stringptr=0;
  3.        
  4. tostring(char c) {
  5.    if(c=='\f')
  6.       stringptr=0;
  7.    else
  8.       string[stringptr]=0;
  9.    
  10.    string[stringptr++]=c;
  11. }
  12.  
  13. main() {
  14.    float f;
  15.    
  16.    f=12.345;
  17.    
  18.    printf(tostring,"\f%6.3f",f);
  19. }

Saludos
Título: Re: de byte a string
Publicado por: PalitroqueZ en 21 de Septiembre de 2006, 11:39:33
Prueba usando (char)(variable int).

Salu2
Título: Re: de byte a string
Publicado por: maunix en 21 de Septiembre de 2006, 15:55:04
Prueba usando (char)(variable int).

Salu2

PalitroqueZ hacer eso solamente 'castea' una variable int como char.  Con lo cual accederías al byte menos significativo de la misma.

Lo que acá se trataba era de convertir el valor de una variable int en su correspondiente representación con caracteres ASCII.


Saludos
Título: Re: de byte a string
Publicado por: PalitroqueZ en 21 de Septiembre de 2006, 19:30:23
Gracias por corregirme maunix.

Es cierto que te guarda el numero como una cadena, pero no corresponde a ese caracter, en tal caso si es un numero de un solo dígito, habría que sumarle 0x30, ya que en la tabla ascci los numeros del 0 al 9 van desde el 0x30 al 0x39.

Por ejemplo si tienes como int a 5 entonces haciendo cadena=(char)5 te guardaría en cadena=5 pero en ascci corresponde a otro caracter, para que sea 5, debería ser cadena=0x35.



Salu2
Título: Re: de byte a string
Publicado por: maunix en 21 de Septiembre de 2006, 22:33:45
Gracias por corregirme maunix.

Es cierto que te guarda el numero como una cadena, pero no corresponde a ese caracter, en tal caso si es un numero de un solo dígito, habría que sumarle 0x30, ya que en la tabla ascci los numeros del 0 al 9 van desde el 0x30 al 0x39.

Por ejemplo si tienes como int a 5 entonces haciendo cadena=(char)5 te guardaría en cadena=5 pero en ascci corresponde a otro caracter, para que sea 5, debería ser cadena=0x35.

Salu2

Si bueno, pero estas hablando de un 'caso especial' de int donde la misma sea <= a 9 , solo en ese caso funcionaría hacer eso que tu dices.

Siendo que una variable int dependiendo del compilador puede ir de 0 a 255 , o de 0 a 65535.

Saludos
Título: Re: de byte a string
Publicado por: jasmsa20 en 22 de Septiembre de 2006, 05:53:11
 :)muchas gracias a todos por responderme al final he utilizado sprintf que parece la mas idonea.