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