【发布时间】:2011-10-26 00:25:21
【问题描述】:
我使用Inet6Address.getByName("2001:db8:0:0:0:0:2:1").toString()方法压缩IPv6地址,输出为2001:db8:0:0:0:0:2:1,但我需要2001:db8::2:1。 , 基本上压缩输出应该基于RFC 5952 standard, 也就是
-
Shorten as Much as Possible :例如,2001:db8:0:0:0:0:2:1 必须缩短为
2001:db8::2:1。同样,2001:db8::0:1 是不可接受的, 因为符号“::”可以用来产生一个 更短的表示 2001:db8::1。 -
Handling One 16-Bit 0 Field:符号“::”不得仅用于缩短一个 16 位 0 字段。 例如,表示 2001:db8:0:1:1:1:1:1 是正确的,但是 2001:db8::1:1:1:1:1 不正确。
-
Choice in Placement of "::" : = 如果在“::”的位置上有其他选择,则 最长的连续 16 位 0 字段必须缩短(即, 具有三个连续零字段的序列在 2001 年被缩短: 0:0:1:0:0:0:1)。当连续 16 位 0 字段的长度 相等(即 2001:db8:0:0:1:0:0:1),第一个零序列 位必须缩短。例如 2001:db8::1:0:0:1 是正确的 表示。
我还检查了 another post in Stack overflow,但没有指定条件(示例选择 :: 的位置)。
是否有任何 java 库来处理这个问题?谁能帮帮我?
提前致谢。
【问题讨论】:
标签: java regex ipv6 regex-negation