Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/345.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 表示IPV6地址的缩写形式_Java_Methods_Ipv6_Utility - Fatal编程技术网

Java 表示IPV6地址的缩写形式

Java 表示IPV6地址的缩写形式,java,methods,ipv6,utility,Java,Methods,Ipv6,Utility,我有一个IPv6地址字符串:2001:1:0:0:10:0:10:10 我想将其表示为IPV6字符串的一个简短形式:2001:1::10:0:10:10 有人知道用java方法来实现这一点吗?因为在某些情况下,它可以用许多不同的方式缩短,所以java API中可能没有这样的函数。您可以手动执行以下操作: Inet6Address.getByName("1080::8:800:200C:417A").replaceFirst("(:0)+:", "::"); 但是我没有很好地测试它。在某些情况下

我有一个IPv6地址字符串:2001:1:0:0:10:0:10:10

我想将其表示为IPV6字符串的一个简短形式:2001:1::10:0:10:10


有人知道用java方法来实现这一点吗?

因为在某些情况下,它可以用许多不同的方式缩短,所以java API中可能没有这样的函数。您可以手动执行以下操作:

Inet6Address.getByName("1080::8:800:200C:417A").replaceFirst("(:0)+:", "::");
但是我没有很好地测试它。在某些情况下,此代码可能是错误的。

可以提供多种方法为IPv4和/或IPv6生成字符串,包括与rfc 5952匹配的IPv6规范字符串。免责声明:我是该库的项目经理

方法toCanonicalString()生成规范字符串,还有一个方法toCompressedString()略有不同。对于规范字符串,不压缩单个零段,但toCompressedString()将压缩此类段。方法toNormalizedString()根本不会压缩

使用您的示例2001:1:0:0:10:0:10:10和另一个示例代码:

IPAddress addr=新的IPAddress字符串(“2001:1:0:0:10:0:10”).getAddress();
System.out.println(addr.toNormalizedString());
System.out.println(addr.toCanonicalString());
System.out.println(addr.toCompressedString());
System.out.println();
addr=newIPAddressString(“2001:db8:0:1:1:1:1”).getAddress();
System.out.println(addr.toNormalizedString());
System.out.println(addr.toCanonicalString());
System.out.println(addr.toCompressedString());
输出:

2001:1:0:0:10:0:10:10
2001:1::10:0:10:10
2001:1::10:0:10:10

2001:db8:0:1:1:1:1:1
2001:db8:0:1:1:1:1:1
2001:db8::1:1:1:1:1

小贴士:“这很紧急”不会让你在这里得到任何好处。我去喝咖啡,用谷歌搜索答案,然后考虑发布解决方案。给我4个小时p这里有一个很好的Java特定答案: