Wie soll ich die Konvertierung von IPv6 zu long und umgekehrt durchführen?Konvertierung von IPv6 zu lang und von lang zu IPv6
Bisher habe ich:
public static long IPToLong(String addr) {
String[] addrArray = addr.split("\\.");
long num = 0;
for (int i = 0; i < addrArray.length; i++) {
int power = 3 - i;
num += ((Integer.parseInt(addrArray[i], 16) % 256 * Math.pow(256, power)));
}
return num;
}
public static String longToIP(long ip) {
return ((ip >> 24) & 0xFF) + "."
+ ((ip >> 16) & 0xFF) + "."
+ ((ip >> 8) & 0xFF) + "."
+ (ip & 0xFF);
}
Ist es richtig, Lösung oder ich etwas verpasst?
(Es wäre ideal, wenn die Lösung für die IPv4- und IPv6-arbeitet)
Adresse
Ok, werde ich das tun. Was ist mit der Konvertierung? Ist es richtig gemacht? – Testeross
Es ist ziemlich einfach, das zu testen: execute longToIP (IPToLong ("122.122.122.124")) und du wirst "34.34.34.36" statt der ursprünglichen "122.122.122.124" bekommen, was bedeutet, dass etwas nicht stimmt. –
Sie haben Recht. Hast du eine Ahnung was falsch ist? – Testeross