Autor Tema: Convertir String a entero.  (Leído 12016 veces)

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

Desconectado ferorts

  • PIC10
  • *
  • Mensajes: 36
Convertir String a entero.
« 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.


Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: Convertir String a entero.
« Respuesta #1 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
El papel lo aguanta todo

Desconectado ferorts

  • PIC10
  • *
  • Mensajes: 36
Re: Convertir String a entero.
« Respuesta #2 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);

Desconectado jhozate

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1697
Re: Convertir String a entero.
« Respuesta #3 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

Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA