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://3232235777
Zwei 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:

Bitverschiebung 8-Bit-Offset-IP-Adresse
Beispiel für die Berechnung von (1 x 256^1) in binärem

public class IP_Decimale {

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;
}
}
Output
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) {

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;
}
Referenzen:
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