将 IPv6 转换为长型,将长型转换为 IPv6
2022-09-02 19:51:36
我应该如何执行从 IPv6 到长整型的转换,反之亦然?
到目前为止,我有:
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);
}
这是正确的解决方案还是我错过了什么?
(如果该解决方案同时适用于ipv4和ipv6,那将是完美的)