我應該如何執行從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