Autor Tema: de byte a string  (Leído 2822 veces)

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

Desconectado jasmsa20

  • PIC10
  • *
  • Mensajes: 12
de byte a string
« 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?

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: de byte a string
« Respuesta #1 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
- 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 jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: de byte a string
« Respuesta #2 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: de byte a string
« Respuesta #3 en: 21 de Septiembre de 2006, 02:49:54 »
Disculpa Jesús, ¿no es la funcion sprintf la que hace eso?

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: de byte a string
« Respuesta #4 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
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: de byte a string
« Respuesta #5 en: 21 de Septiembre de 2006, 11:39:33 »
Prueba usando (char)(variable int).

Salu2
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: de byte a string
« Respuesta #6 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
- 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 PalitroqueZ

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5474
    • Electrónica Didacta
Re: de byte a string
« Respuesta #7 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
La propiedad privada es la mayor garantía de libertad.
Friedrich August von Hayek

Desconectado maunix

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4751
    • Mi Sitio Web Personal
Re: de byte a string
« Respuesta #8 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
- 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 jasmsa20

  • PIC10
  • *
  • Mensajes: 12
Re: de byte a string
« Respuesta #9 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.


 

anything