我用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,即將IPV6地址壓縮成Java壓縮格式
1)Shorten as Much as Possible:例如,2001:DB8:0:0:0:0:2:1必須被縮短爲
2001:DB8 :: 2 :1.同樣,2001:db8 :: 0:1是不可接受的, ,因爲可以使用符號「::」來產生更短的表示2001:db8 :: 1。
2)Handling One 16-Bit 0 Field:符號 「::」 絕不能使用,以縮短僅一個16位的0場。 例如,表示法2001:db8:0:1:1:1:1:1是正確的,但是不正確。
3)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庫來處理這個問題?任何人都可以幫我嗎?
在此先感謝。
願望哪些格式,我可以更不僅僅是+1詳細解釋 –
+1相當不俗 –
@Tim真棒....非常感謝你的出色答案。 – Tony