gpt4 book ai didi

java - 将 IPv6 转换为 long 并将 long 转换为 IPv6

转载 作者:太空狗 更新时间:2023-10-29 22:38:07 24 4
gpt4 key购买 nike

我应该如何执行从 IPv6 到 long 的转换,反之亦然?

到目前为止我有:

    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 就完美了)

最佳答案

你也可以使用java.net.InetAddress
它适用于 ipv4 和 ipv6(所有格式)

public static BigInteger ipToBigInteger(String addr) {
InetAddress a = InetAddress.getByName(addr)
byte[] bytes = a.getAddress()
return new BigInteger(1, bytes)
}

关于java - 将 IPv6 转换为 long 并将 long 转换为 IPv6,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17875728/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com