Tôi nên thực hiện chuyển đổi từ IPv6 sang dài và ngược lại như thế nào?Chuyển đổi IPv6 thành dài và dài thành IPv6
Cho đến nay tôi có:
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);
}
Có giải pháp đúng hay tôi bị mất cái gì?
(Nó sẽ là hoàn hảo nếu các giải pháp làm việc cho cả IPv4 và IPv6)
Ok, tôi sẽ làm điều đó. Điều gì về việc chuyển đổi? Nó có được thực hiện đúng không? – Testeross
Rất dễ dàng để kiểm tra rằng: thực thi longToIP (IPToLong ("122.122.122.124")) và bạn sẽ nhận được "34.34.34.36" thay vì bản gốc "122.122.122.124" có nghĩa là một cái gì đó không chính xác. –
Bạn nói đúng. Bạn có bất cứ ý tưởng gì là sai? – Testeross