Справочная информация. При проверке строки в качестве действительного адреса ipv6 необходимо учитывать множество сценариев ios из-за сокращений.
::
::1
2622:ca00:139:594::64:90f3
2622:ca00:0139:0594:0000:0000:0064:90f3
- все действительные способы представления адресов ipv6 в виде строк. , Если бы мне нужна была функция для проверки строки как действительного адреса ipv6, мне нужно было бы принять во внимание все эти случаи.
Проблема: мне нужна помощь в написании функции java / scala, которая принимает массив байтов и проверяет его как адрес ipv6. Похоже, я не могу понять, когда адрес ipv6 записывается в виде массива байтов, всегда ли он длиной 16 байтов или есть способы сокращения, аналогичные тому, как адреса можно сокращать с помощью строковых обозначений? Если байтовое представление ipv6 всегда составляет 16 байтов и никогда не сокращается, я полагаю, что я могу просто проверить правильность ipv6 с приведенным ниже логом c - так ли это?
/**
* Return true if byte array is a valid ipv6 address.
*
* @param ip - array of bytes representing ip address
* @return - true if ip address is a valid ipv6 address
*/
def isIpV6(ip: Array[Byte]): Boolean = {
ip != null && ip.length == 16
}