TODOPIC
Bienvenido(a), Visitante. Por favor, ingresa o regístrate.
¿Perdiste tu email de activación?
22 de Octubre de 2014, 20:54:35

Ingresar con nombre de usuario, contraseña y duración de la sesión
Buscar:     Búsqueda Avanzada
350203 Mensajes en 39287 Temas por 41037 Usuarios
Último usuario: micro24
* Inicio Ayuda Buscar Calendario Ingresar Registrarse
Buscar en TodoPIC
+  TODOPIC
|-+  Microcontroladores PIC
| |-+  Lenguaje C para microcontroladores PIC (Moderadores: Modulay, pikman, pocher, vszener, Suky)
| | |-+  Convertir String a entero.
0 Usuarios y 1 Visitante están viendo este tema. « anterior próximo »
Páginas: [1] Marcar como favorito Imprimir
Autor Tema: Convertir String a entero.  (Leído 3571 veces)
ferorts
PIC10
*
Desconectado Desconectado

España España

Mensajes: 36


« : 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.

En línea
MLO__
Colaborador
DsPIC33
*****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 4503

MLO


« Respuesta #1 : 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
En línea

El papel lo aguanta todo
ferorts
PIC10
*
Desconectado Desconectado

España España

Mensajes: 36


« Respuesta #2 : 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);
En línea
jhozate
Colaborador
PIC24H
*****
Desconectado Desconectado

Sexo: Masculino
Colombia Colombia

Mensajes: 1598



« Respuesta #3 : 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

En línea

Ser Colombiano es un Premio, Saludos desde CALI-COLOMBIA
TODOPIC
   

 En línea
Páginas: [1] Imprimir 
« anterior próximo »
Ir a:  

Impulsado por MySQL Impulsado por PHP Powered by SMF 1.1.20 | SMF © 2006-2008, Simple Machines XHTML 1.0 válido! CSS válido!
Página creada en 0.035 segundos con 23 consultas.