我应该如何执行从IPv6到长的转换,反之亦然?将IPv6转换为长和长的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);
}
是不是正确的解决办法还是我错过了什么?
好吧,我将这样做。怎么样的转换?它做对了吗? – Testeross
测试它很容易:执行longToIP(IPToLong(“122.122.122.124”)),你会得到“34.34.34.36”,而不是原来的“122.122.122.124”,这意味着有些东西是不正确的。 –
你说得对。你有什么想法吗? – Testeross