Autor Tema: Convertir valores en cadenas...  (Leído 2843 veces)

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

Desconectado Rodricity

  • PIC10
  • *
  • Mensajes: 43
Convertir valores en cadenas...
« en: 29 de Noviembre de 2007, 10:21:32 »
 Pues eso, siempre eh tenido la duda de como hacerlo de manera eficiente.

 Es decir, no sé, tengo un byte con valor 235 y quiero separarlo en un 2, un 3 y un 5, es decir, convertirlo en un array.

 Leyendo vi que en CCS es mas o menos simple, ya que hay una funcion, pero yo aprendi a trabajar con hi-tec
y hasta el momento lo veo mucho mas simple que CCS...

 Existe alguna manera de transformar lo antes de dicho? o por ultimo crear una funcion para
transformar dicha funcion, por que empezar a dividir por multiplos de 10, ignorando decimales
no me parece una solucion muy viable...

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: Convertir valores en cadenas...
« Respuesta #1 en: 29 de Noviembre de 2007, 10:32:06 »
Hola Drodricity!

Hasta donde yo se, dividiendo por 100, por 10 y jugando con los resultados es la mejor manera....Al menos, no usas ninguna funcion "de libreria" que pueda no estar presente en otros compiladores...

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: Convertir valores en cadenas...
« Respuesta #2 en: 29 de Noviembre de 2007, 10:45:51 »
Es decir, no sé, tengo un byte con valor 235 y quiero separarlo en un 2, un 3 y un 5, es decir, convertirlo en un array.

La manera práctica y simple de hacerlo es como te dice ariel (aitopes).  La otra es usar la funcion itoa (integer to ascii) pero te lo convierte en una cadena de ascii.  Un string también es un array , luego a cada caracter le restas 48 y te queda el resultado que deseas.

- La soberbia de un Einstein es entendible.. la de un salame es intolerable (A.Dolina)
- En teoría no hay diferencia entre la teoría y la práctica. En la práctica... si la hay.
- Lee, Lee, Lee y luego pregunta.(maunix)
- Las que conducen y arrastran al mundo no son las máquinas, sino las ideas (V. Hugo)
- Todos los hombres se parecen por sus palabras; solamente las obras evidencian que no son iguales.(Moliere)
- Todo debería ser hecho tan simple como sea posible pero no mas simple que eso.(A.Einstein)

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
Re: Convertir valores en cadenas...
« Respuesta #3 en: 29 de Noviembre de 2007, 14:00:05 »
Otra forma, con la función sprintf:

sprintf(cadena,"%u",entero)

En tu caso si entero=235, pués entonces:

cadena[0]=2
cadena[1]=3
cadena[2]=5

Un saludo

Desconectado Rodricity

  • PIC10
  • *
  • Mensajes: 43
Re: Convertir valores en cadenas...
« Respuesta #4 en: 29 de Noviembre de 2007, 14:16:17 »
 Bueno, aca adjunto lo que termine haciendo...

 -- Obtener el valor --

matriz_scan();
fuerza[0] = teclado;
fuerza_real = (teclado-48) * 1000;
matriz_scan();
fuerza[1] = teclado;
fuerza_real = fuerza_real + (teclado-48) * 100;
matriz_scan();
fuerza[2] = teclado;
fuerza_real = fuerza_real + (teclado-48) * 10;
matriz_scan();
fuerza[3] = teclado;
fuerza_real = fuerza_real + (teclado-48);

 para enviar el valor...

escribir_str_lcd2(revoluciones);

 y la funcion hace...

 
void escribir_str_lcd2(const char *data)
{
   while(*data!=0)
      {
      RC3=1;
      PORTB = *data++;
      strobe();
      RC3=0;
      b_flag();
      }
}

 Explico, con el teclado matricial capto la tecla, y segun lo que capto, lo codifico en el caracter que corresponde,
luego simplemente trabajo en base al numero del caracter de la tabla ascii

 No se si se entiende...

 Y el valor "_real" simplemente es para despues ransmitirlo via RS-232

 Si quieres les muestro la simulacion en proteus...