我想知道,是否有一个库可用于将长IPv6地址(例如2002:9876:57AB:0000:0000:0000:0000:0001)的表示转换为压缩的IPv6格式(在这种情况:2002:9876:57AB :: 1).
我找不到这样的图书馆.此库不应使用任何IP Api,不得进行网络连接.
我已经试过了
return Inet6Address.getByName(longAdress).toString();
Run Code Online (Sandbox Code Playgroud)
但这只是将4个零替换为1(在本例中为2002:9876:57AB:0:0:0:0:1).
有什么建议?
public class Ipv6AddressCompressor {
public static String getCompressedAddress(String longAddress) throws UnknownHostException {
longAddress = Inet6Address.getByName(longAddress).getHostAddress();
return longAddress.replaceFirst("(^|:)(0+(:|$)){2,8}", "::");
}
}
Run Code Online (Sandbox Code Playgroud)
这应该可以保护您免受无效地址的影响(抛出 UnknownHostException),并且会正确压缩尾随 ipv4 地址(即 0:0:0:0:0:0:255.255.255.255 -> ::FFFF:FFFF)。这也将防止已经压缩的地址。
| 归档时间: |
|
| 查看次数: |
7923 次 |
| 最近记录: |