TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: ferorts en 21 de Diciembre de 2010, 10:24:44

Título: Convertir String a entero.
Publicado por: ferorts en 21 de Diciembre de 2010, 10:24:44
Hola a todos, mi problema es que tengo que convertir un numero introducido a una variable de tipo string,por rs232 a un numero entero para poder trabajar con el, he estado mirando el manual las funciones atoi,atol,atoi32 ,pero mi problema esque con esos ejemplos del manual de ccs c solo consigo convertir numeros de hasta 255 (8bits) y yo necesito trabajar con valores de 0 a 2000, o sea 11 bits.

char s2[9];
int i,ret=0;
int x;

printf("\r\n Comando :");
fgets(s2);
printf("\r\n Comando introducido es ");
puts(s2);
 
x = atoi32(s2);
printf("\r\n\n Comando atoi32 %d :",x);


Gracias.

Título: Re: Convertir String a entero.
Publicado por: MLO__ en 21 de Diciembre de 2010, 11:39:56
Hola.

Es con la función atol(). Recuerda incluir la librería string.h.

Citar
Syntax:
 ivalue = atoi(string)

   or

lvalue = atol(string)

   or

i32value = atoi32(string)

 

 
 
Parameters:
 string is a pointer to a null terminated string of characters.

 
 
Returns:
 ivalue is an 8 bit int.

lvalue is a 16 bit int.

i32value is a 32 bit int.

 
 
Function:
 Converts the string passed to the function into an int representation. Accepts both decimal and hexadecimal argument. If the result cannot be represented, the behavior is undefined.
 


Saludos
Título: Re: Convertir String a entero.
Publicado por: ferorts en 22 de Diciembre de 2010, 20:48:32
Muchas Gracias , probe con long int, pero no me salio,me equivocaria en algo mas,xdd , he probado declarando la variable en int16 y perfecto.Dejo el codigo por si le sirve a alguien.

#include <stdlib.h> //Libreria a incluir para usar funcion de conversion.
int i,ret=0;
int16 x;

printf("\r\n Comando :");
fgets(s2);
printf("\r\n Comando introducido es ");
puts(s2);

x = atol(s2);
printf("\r\n\n Numero es: %Lu ",x);
Título: Re: Convertir String a entero.
Publicado por: jhozate en 15 de Mayo de 2014, 20:31:11
hola a todos, pues bien he leído un poco acerca de como convertir ascii a entero, según veo se puede hacer con la función atol de la librería stdlib.h 
Estoy recibiendo datos de un gps y estoy almacenando todo en un arreglo de 45 posiciones, donde los dos últimos bytes corresponden al checksum (no capturo CR y LF)
como está en ascii y separado en bytes, quisiera comprobarlo con el checksum que calculo yo al recibir toda la cadena, básicamente lo pienso así:

1-obtener el valor decimal del primer byte restando 48 y multiplicarlo por 10
2-obtener el valor entero del segundo byte restando 48
3-sumar ambos números obtenidos

no se si le doy muchas vueltas al asunto