La Red de Conocimientos Pedagógicos - Conocimientos matemáticos - Cómo leer la dirección IP del documento y convertirla en un tipo largo sin firmar usando lenguaje C en Windows

Cómo leer la dirección IP del documento y convertirla en un tipo largo sin firmar usando lenguaje C en Windows

#include lt;stdio.hgt;

#include lt;stdlib.hgt;

#include lt;string.hgt;

/*Convertir IP en forma de cadena a un número entero

Parámetros:

strIP IP en forma de cadena

intIP Entero después de una conversión exitosa

Retorno:

Si la conversión falla, devuelve 0; de lo contrario, devuelve 1

*/

int strToInt(char strIP[], unsigned long * intIP)

{

int longitud = strlen(strIP);

int i=0, k=3, part=0;

*intIP=0;

for(i=0;ilt;=length;i)

{

if(strIP[i]== '.' || strIP[i]=='\0')

(*intIP) |= (partlt;lt;(k--*8)), part=0;

else if(strIP[i]gt;='0' amp; amp; strIP[i]lt;='9')

part=part*10 (strIP[i]- '0');

más

devuelve 0;

}

devuelve 1; /p>

/*Convertir IP en forma de cadena a un número entero

Parámetros:

intIP IP en forma de entero

strIP Convertir a IP en forma de cadena

Devolución:

Si la conversión falla, devuelve 0; de lo contrario, devuelve 1

*/

int intToStr(unsigned long intIP, char strIP[])

{

int buf[4], i

for(i=0; ilt; 4; i )

{

buf[i]=intIP256;

intIP/=256;

}

if(intIP ! =0)

devuelve 0;

else

{

sprintf(strIP, "d.d.d.d", buf[3], buf [2], buf[1], buf[0]);

return 1

}

}

int principal; (int argc, char *argv[])

{

char strIP[16];

intIP largo sin firmar;

/ /ip se guarda en el archivo ips.txt y aquí se utiliza la redirección de entrada para facilitar la entrada.

if(freopen("ips.txt", "r", stdin)!=NULL)

{

// Bucle para leer la cadena hasta Fin del archivo

while(scanf("s",strIP) !=EOF)

{

// palabra de la cadena IP entero IP

if(strToInt(strIP, amp; intIP))

{

printf("La cadena IP se convierte en un número entero: s (cadena) = lu (decimal) = lX(hex)\n", strIP, intIP, intIP);

// Realiza la conversión inversa de IP entera a IP de cadena para verificar la exactitud de la conversión

intToStr( intIP, strIP);

printf("Convertir un número entero en una IP de cadena: lu (decimal) = lX (hexadecimal) = s (cadena) \n\n", intIP, intIP, strIP);

}

else

{

printf("¡s no es una IP legal! \n\n",strIP);

}

}

}

else

{

printf(" ¡No se puede abrir el archivo ip!\n");

}

scanf("d", amp; intIP);

system("pause") ;

return 0;

}

/*

IP de cadena Convertir a un número entero: 202.112.1.1 (cadena) = 3396337921 (decimal) = CA700101 (decimal

Hex)

Un número entero convertido en una cadena IP: 3396337921 (decimal) ) = CA700101 (hex) = 202.112.1.1 (

String)

/ ¡no es una IP legal!

Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hex)

Un entero convertido a IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0

(String)

IP de cadena convertida a un número entero: 202.112 .1.2 (cadena) = 3396337922 (decimal ) = CA700102 (decimal) Base) = 202.112.1.2 (

Cadena)

>/ ¡no es una IP legal!

Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hex)

Un entero convertido a IP de cadena: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0

(String)

IP de cadena convertida a un número entero: 202.112 .2.1 (cadena) = 3396338177 (decimal ) = CA700201 (decimal) Base) = 202.112.2.1 (

String)

/ ¡no es una IP legal!

Convierte la cadena IP a un número entero: 255.255.255.0 (cadena) = 4294967040 (decimal) = FFFFFF00 (

Hex)

A Convertir entero a cadena IP: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0

(cadena)

*/