-
Convertir IP en C
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:
Código:
#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:
Código:
$ 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
-
Cambias:
printf("\nIP en base 256: %d\n",base256);
Por:
printf("\nIP en base 256: %u\n",base256);
%d -> Double
%u -> Unsigned
Saludos:rolleyes:
-
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 ;);)
-
%u -> entero sin signo
Salu2