Я использовал метод 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 , то есть
1) Сократить как можно больше : Например, 2001:db8:0:0:0:0:2:1 нужно сократить до
2001:db8::2:1. Аналогично, 2001:db8::0:1 недопустимо, поскольку символ "::" мог бы использоваться для создания более короткого представления 2001:db8::1.
2) Обработка одного 16-битного поля 0 strong> : символ "::" НЕ ДОЛЖЕН использоваться для сокращения только одного 16-битного поля 0. Например, представление 2001:db8:0:1:1:1:1:1 верно, а 2001:db8::1:1:1:1:1 неверно.
3) Выбор места "::": = Когда существует альтернативный вариант размещения «::», самая длинная последовательность последовательных 16-битных нулевых полей ДОЛЖНА быть сокращена (т. е. последовательность с тремя последовательными нулевыми полями укорачивается в 2001: 0 :0:1:0:0:0:1). Когда длина последовательных 16-битных нулевых полей равна (т. е. 2001:db8:0:0:1:0:0:1), первая последовательность нулевых битов ДОЛЖНА быть укорочена. Например, 2001:db8::1:0:0:1 является правильным представлением.
Я также проверил другой опубликовать в переполнении стека, но не было указано условие (пример выбора в размещении ::).
Есть ли какая-нибудь java-библиотека для этого? Кто-нибудь может мне помочь?
Заранее спасибо.