Jak powinienem wykonać konwersję z IPv6 na długi i na odwrót?Konwersja IPv6 na długi i długi na IPv6
Do tej pory mam:
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);
}
Czy to prawidłowe rozwiązanie lub coś przeoczyłem?
(Idealnie byłoby, gdy roztwór działa zarówno IPv4 jak i IPv6)
Ok, zrobię to. A co z konwersją? Czy to jest zrobione dobrze? – Testeross
Łatwo przetestować: wykonaj longToIP (IPToLong ("122.122.122.124")), a otrzymasz "34.34.34.36" zamiast oryginału "122.122.122.124", co oznacza, że coś jest nie tak. –
Masz rację. Czy masz pojęcie, co jest nie tak? – Testeross