Veamos primero el código de ejemplo:
Copie el código de código de la siguiente manera:
clase
{
privadoestáticolongiptolong(stringstrip)
//Convierta la dirección IP en el formato 127.0.0.1 a un entero decimal. Aquí no se realiza ningún manejo de errores.
{
intj=0;
inti=0;
largo[]ip=nuevolargo[4];
intposition1=strip.indexof(".");
intposition2=strip.indexof(".",posición1+1);
intposition3=strip.indexof(".",posición2+1);
ip[0]=long.parselong(strip.substring(0,posición1));
ip[1]=long.parselong(strip.substring(posición1+1,posición2));
ip[2]=long.parselong(strip.substring(posición2+1,posición3));
ip[3]=long.parselong(strip.substring(posición3+1));
return(ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];//ip1*256*256*256+ip2*256* 256+ip3*256+ip4
}
cadenaestáticaprivadalongtoip(longlongip)
//Convierta el formato entero decimal en una dirección IP con el formato 127.0.0.1, ingrese ping3396362403l en el símbolo del sistema
{
stringbuffersb=newstringbuffer("");
sb.append(string.valueof(longip>>>24));//Desplazamiento a la derecha 24 bits directamente
sb.append(".");
sb.append(string.valueof((longip&0x00ffffff)>>>>16));//Establece los 8 bits altos en 0 y luego cambia a la derecha 16 bits
sb.append(".");
sb.append(string.valueof((longip&0x0000ffff)>>>>8));
sb.append(".");
sb.append(string.valueof(longip&0x000000ff));
sb.append(".");
devuelveb.tostring();
}
publicstaticvoidmain(cadena[]argumentos)
{
system.out.println("Varias expresiones de dirección IP: rn");
system.out.print("forma binaria de 32 bits: ");
system.out.println(long.tobinarystring(3396362403l));
system.out.print("Forma decimal:");
system.out.println(iptolong("202.112.96.163"));
system.out.print("Forma común:");
system.out.println(longtoip(3396362403l));
}
}
Resultados de ejecución:
Varias manifestaciones de direcciones IP:
Forma binaria de 32 bits: 11001010011100000110000010100011
Forma decimal: 3396362403
Forma común: 202.112.96.163.
Salida completa (tarda 1 segundo): terminación normal. Analicemos los puntos de conocimiento paso a paso: un número binario, desplazado a la izquierda n bits, es multiplicar el valor del número por 2 elevado a la enésima potencia y dividirlo por dos. eso es desplazar una posición a la derecha
1. Convertir la dirección IP a un número entero <BR>Principio: cada segmento de la dirección IP puede considerarse como un entero sin signo de 8 bits, es decir, 0-255. Divida cada segmento en forma binaria, combínelo y luego conviértalo. El número binario en un 32 sin signo es un número entero.
Ejemplo: una dirección IP es 10.0.3.193
El número binario correspondiente a cada segmento de números.
1000001010
000000000
300000011
19311000001
La combinación es: 00001010000000000000001111000001. Cuando se convierte a decimal, es: 167773121, es decir, el número convertido de la dirección IP es ese.
El código es el siguiente.
Copie el código de código de la siguiente manera:
clase públicaIp{
publicstaticvoidmain(String[]argumentos){
System.out.print(ip2int("10.0.3.193"));
}
publicstaticlongip2int(Stringip){
Cadena[]elementos=ip.split(".");
returnLong.valueOf(elementos[0])<<24
|Long.valueOf(elementos[1])<<16
|Long.valueOf(elementos[2])<<8
|Long.valueOf(elementos[3]);
}
}
2. Convertir un número entero en una dirección IP <BR>Principio: Convierta este número entero en un número binario de 32 bits. De izquierda a derecha, divida cada 8 bits para obtener 4 segmentos de números binarios de 8 bits. Convierta estos números binarios en números enteros y agregue "." Esta es la dirección IP.
La representación binaria es: 00001010000000000000001111000001
Divídelo en cuatro segmentos: 00001010, 00001010, 00000011, 11000001. Después de convertirlos a números enteros y agregar ".", obtienes 10.0.3.193.
El código es el siguiente.
Copie el código de código de la siguiente manera:
clase públicaIp{
publicstaticvoidmain(String[]argumentos){
System.out.print(int2ip(167773121));
}
publicstaticStringint2ip(longipInt){
StringBuildersb=newStringBuilder();
sb.append(ipInt&0xFF).append(".");
sb.append((ipInt>>8)&0xFF).append(".");
sb.append((ipInt>>16)&0xFF).append(".");
sb.append((ipInt>>24)&0xFF);
devuelveb.toString();
}
}