PDA

Ver la versión completa : Convertir IP en C



l0StiE
13-04-2008, 22:32
Hola soy nuevo por aqui pero espero que me podreis resolver este problema

Me estoy iniciando en C y he intentado hacer un programa que transforme la IP a un numero en base 256 y no me funciona
El código es el siguiente:

#include <stdio.h>

/* Declaración de las variables correspondientes a la IP
como enteros y de la IP en base 256 com largo sin signo */
int prim, sec, terc, cuar;
int base256;

int main()
{
printf("\n Transformacion de IP\n");

printf("Dirección IP: ");
scanf("%d.%d.%d.%d",&prim,&sec,&terc,&cuar); // Lee la IP en formato xxx.xxx.xxx.xxx y la transforma en 4 variables

base256=prim*(256*256*256)+sec*(256*256)+terc*256+ cuar;
printf("\nIP en base 256: %d\n",base256);
return(0);
}

y la salida en consola es esta:

$ gcc transformip.c -o transformip
$ ./transformip
Transformacion de IP
Dirección IP: 192.168.1.39

IP en base 256: -1062731481

cuando la salida tendria que ser 'IP en base 256: 3232235815'
Que hago mal??

Gracias y salu2 ;);)

EDITADO: tambien he probado declarando base256 como entero largo, pero se desborda igualmente

Nost
14-04-2008, 17:32
Cambias:

printf("\nIP en base 256: %d\n",base256);

Por:

printf("\nIP en base 256: %u\n",base256);

%d -> Double
%u -> Unsigned

Saludos:rolleyes:

l0StiE
14-04-2008, 17:44
muchas gracias, funcionó!!
es que habia visto en un sitio que la expresion %u era para enteros con signo :rolleyes:
y gracias otra vez

salu2 ;);)

j8k6f4v9j
16-04-2008, 14:14
%u -> entero sin signo

Salu2



http://img359.imageshack.us/img359/6631/celliigy4.pngKeep on Rollin' :mad: