Schauen wir uns zunächst den Beispielcode an:
Kopieren Sie den Codecode wie folgt:
Klasse
{
privatestaticlongiptolong(stringstrip)
//Konvertieren Sie die IP-Adresse im Format 127.0.0.1 in eine dezimale Ganzzahl. Hier wird keine Fehlerbehandlung durchgeführt.
{
intj=0;
inti=0;
long[]ip=newlong[4];
intposition1=strip.indexof(".");
intposition2=strip.indexof(".",position1+1);
intposition3=strip.indexof(".",position2+1);
ip[0]=long.parselong(strip.substring(0,position1));
ip[1]=long.parselong(strip.substring(position1+1,position2));
ip[2]=long.parselong(strip.substring(position2+1,position3));
ip[3]=long.parselong(strip.substring(position3+1));
return(ip[0]<<24)+(ip[1]<<16)+(ip[2]<<8)+ip[3];//ip1*256*256*256+ip2*256* 256+ip3*256+ip4
}
privatestaticstringlongtoip(longlongip)
// Konvertieren Sie die dezimale Ganzzahlform in eine IP-Adresse im Format 127.0.0.1 und geben Sie an der Eingabeaufforderung ping3396362403l ein
{
stringbuffersb=newstringbuffer("");
sb.append(string.valueof(longip>>>24));//Direkt um 24 Bit nach rechts verschieben
sb.append(".");
sb.append(string.valueof((longip&0x00ffffff)>>>>16));//Setzen Sie die oberen 8 Bits auf 0 und verschieben Sie sie dann um 16 Bits nach rechts
sb.append(".");
sb.append(string.valueof((longip&0x0000ffff)>>>>8));
sb.append(".");
sb.append(string.valueof(longip&0x000000ff));
sb.append(".");
returnb.tostring();
}
publicstaticvoidmain(string[]args)
{
system.out.println("Verschiedene Ausdrücke der IP-Adresse: rn");
system.out.print("32-Bit-Binärform: ");
system.out.println(long.tobinarystring(3396362403l));
system.out.print("Dezimalform:");
system.out.println(iptolong("202.112.96.163"));
system.out.print("Gemeinsame Form:");
system.out.println(longtoip(3396362403l));
}
}
Laufergebnisse:
Verschiedene Erscheinungsformen von IP-Adressen:
32-Bit-Binärform: 11001010011100000110000010100011
Dezimalform: 3396362403
Gemeinsame Form: 202.112.96.163.
Ausgabe abgeschlossen (dauert 1 Sekunde) – normale Beendigung Analysieren wir die Wissenspunkte Schritt für Schritt: Eine um n Bits nach links verschobene Binärzahl ist der Wert der Zahl mit 2, erhöht auf die n-te Potenz, zu multiplizieren und durch zwei zu dividieren. Das heißt, eine Position nach rechts verschieben
1. IP-Adresse in Ganzzahl umwandeln <BR>Prinzip: Jedes Segment der IP-Adresse kann als 8-Bit-Ganzzahl ohne Vorzeichen betrachtet werden, d. h. 0-255. Teilen Sie jedes Segment in eine Binärform auf, kombinieren Sie es und konvertieren Sie es dann Binärzahl in eine vorzeichenlose 32 ist eine ganze Zahl.
Beispiel: Eine IP-Adresse ist 10.0.3.193
Die Binärzahl, die jedem Zahlensegment entspricht
1000001010
000000000
300000011
19311000001
Die Kombination lautet: 00001010000000000000001111000001. Bei der Konvertierung in eine Dezimalzahl lautet sie: 167773121, also die konvertierte Nummer der IP-Adresse.
Der Code lautet wie folgt
Kopieren Sie den Codecode wie folgt:
publicclassIp{
publicstaticvoidmain(String[]args){
System.out.print(ip2int("10.0.3.193"));
}
publicstaticlongip2int(Stringip){
String[]items=ip.split(".");
returnLong.valueOf(items[0])<<24
|Long.valueOf(items[1])<<16
|Long.valueOf(items[2])<<8
|Long.valueOf(items[3]);
}
}
2. Wandeln Sie eine Ganzzahl in eine IP-Adresse um <BR>Prinzip: Wandeln Sie diese Ganzzahl in eine 32-Bit-Binärzahl um. Teilen Sie von links nach rechts alle 8 Bits, um 4 Segmente von 8-Bit-Binärzahlen zu erhalten, und fügen Sie „.“ hinzu
Die binäre Darstellung ist: 00001010000000000000001111000001
Teilen Sie es in vier Segmente auf: 00001010, 00001010, 00000011, 11000001. Nachdem Sie sie in ganze Zahlen umgewandelt und „.“ hinzugefügt haben, erhalten Sie 10.0.3.193.
Der Code lautet wie folgt
Kopieren Sie den Codecode wie folgt:
publicclassIp{
publicstaticvoidmain(String[]args){
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);
returnb.toString();
}
}