Red de conocimiento informático - Material del sitio web - Cómo leer la dirección IP del documento y convertirla en un tipo largo sin firma usando lenguaje C en Windows

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

#include

#include

#include

/ *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

Volver :

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

*/

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

p>

{

int longitud = strlen(strIP);

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

* intIP =0;

for(i=0;i<=length;i++)

{

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

(*intIP) |= (parte<<(k--*8)) , parte=0;

else if(strIP[i]>='0' && strIP[i]<='9')

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

else

devuelve 0

}

devuelve 1;

}

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

Parámetros:

intIP Convertir IP en forma de entero

strIP Convertir IP en forma de cadena

Regresar :

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;i<4;i++)

{

buf[i]=intIP%256;

intIP/=256

}

if(intIP !=0)

devuelve 0;

else

{

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

devuelve 1; p>int main(int argc, char *argv[])

{

char strIP[16];

intIP largo sin firmar;

// La IP se guarda en el archivo ips.txt. La redirección de entrada se utiliza aquí 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,&intIP))

{

printf("Convertir cadena IP a un número entero: %s (cadena) = %lu( Decimal) = %lX (hexadecimal)\n",strIP,intIP,intIP);

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

intToStr(intIP ,strIP);

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

}

else

{

printf ("¡%s no es una IP válida!\n\n", tiraIP);

}

}

}

más

{

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

}

scanf("%d",&intIP);

system("pausa ");

return 0;

}

/*

La IP de la cadena se convierte en un número entero: 202.112.1.1 (cadena ) = 3396337921 (decimal) = CA700101 (decimal

Heximal)

Un número entero se convierte 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 (

String)

/ ¡no es una IP legal!

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

Hexadecimal)

Convertir un número entero a una cadena IP: 4294967040 (decimal) = FFFFFF00 (hexadecimal) = 255.255.255.0

(cadena)

Convertir la cadena IP a un número entero: 202.112.2.1 (cadena) = 3396338177 (decimal) = CA700201 (decimal

Hex)

Convertir un número entero a un carácter IP de cadena: 3396338177 (decimal) = CA700201 (hexadecimal) = 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)

*/