IPv6からlongへの変換とその逆の変換はどのように行うべきですか?変換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);
}
それが正解ですか私は何かを逃しましたか?
(溶液は、IPv4とIPv6の両方のために働いた場合、それは完璧であろう)
[OK]をIPv4とIPv6の両方で動作しますjava.net.InetAddress
を使用することができ、私はそれを行います。変換はどうですか?それは正しいのでしょうか? – Testeross
これをテストするのは簡単です:longToIP(IPToLong( "122.122.122.124"))を実行すると、元の "122.122.122.124"の代わりに "34.34.34.36"が得られます。 –
あなたは正しいです。あなたは何が間違っているか考えていますか? – Testeross