Konvertieren Sie eine IP-Adresse in ein int/long in Java
In diesem Tutorial sehen wir uns die Methoden an, um eine Dezimalzahl (Basis 10) von einer IP-Adresse zu erhalten. Verwenden der dezimalen IP-Codierung (Basis 10) ist etwas seltsam, obwohl es im Browser erlaubt ist.So codieren Sie die IP-Adresse in decimal
Eine IP-Adresse besteht aus einer Gruppe von 4 Zahlen. Wenn Sie beispielsweise 192.168.1.1 dezimal codieren möchten, müssen Sie in Java die durch "." getrennten Zahlen der IP-Adresse mit der Funktion split und legen Sie jedes in ein Feld in der Tabelle. Die IP-Adresse ist die Basis 256, hier ist die Umrechnungsformel:
192 x 256^3 + 168 x 256^2 + 1 x 256^1 + 1 x 1
3221225472 + 11010048 + 256 + 1 = 3232235777
Sie können dies überprüfen, indem Sie zum Browser gehen
http://3232235777Zwei Möglichkeiten, die IP-Adresse in einer Dezimalzahl auszudrücken:
1- IP-Adresse in Bitverschiebung
Wir verschieben n*8 Bits nach links, es ist eine Methode, um die Leistung binär zu machen. Hier ist ein Beispiel für einen 8-Bit-Offset der letzten Zahl von 192.168.1.1:![]() |
Beispiel für die Berechnung von (1 x 256^1) in binärem |
public class IP_Decimale {Output
public static void main(String[] zero) {
String ip = "192.168.1.1";
//IP-Adresse in dezimal
lang iplong = IPenBase10(ip);
System.out.println(iplong);
}
public static long IPenBase10(String IP address) {
long decimal = 0;
//die Zahlen werden durch Punkte getrennt
//setzen Sie jede in ein Feld im array
String[] arrayIP = IP.address.split("\\.");
//von rechts nach links
for (int i = 3; i >= 0; i--) {
//convert to long
long ip = Long.parseLong(arrayIP[3 - i]);
//shift (i*8) Bits nach links und sum
long bitshift= ip < < (i*8);
dezimal += bitshift;
System.out.println(ip+" < < "+(i*8)+" : "+Bitverschiebung);
}
dezimal zurückgeben;
}
}
192 < < 24 : 3221225472
168 < < 16 : 11010048
1 < < 8 : 256
1 < < 0 : 1
result: 3232235777
2- Power-IP-Adresse von 256
Diese Methode besteht aus der Berechnung der Leistung mit der Funktion Math.pow und multiplizieren Sie mit der Ziffer der IP-Adresse.public static long IPenBase10puiss(String IP address) {Referenzen:
long decimal = 0;
String[] arrayIP = IP.address.split("\\.");
//von rechts nach links
for (int i = 0; i<=3; i++) {
long ip = Long.parseLong(arrayIP[i]);
long puiss= ip * (lang) Math.pow(256, 3-i);
dezimal += Potenzen;
System.out.println(arrayIP[i] +": "+puiss);
}
dezimal zurückgeben;
}
Netzwerk in Java: IP-Adressen manipulieren
Assist: Wie kodiere ich eine IP-Adresse in Dezimalzahlen?
Wikipedia: Bitverschiebungen
rice University: Java Bit Manipulation Guide
StackOverFlow: IP-Adresskonvertierung in Dezimalzahlen und umgekehrt