The IPAddress Java library puede lograr lo que usted está describiendo aquí.
Las direcciones IPv6 son de 16 bytes. El uso de esa biblioteca, si usted está comenzando con una matriz de 16 bytes se puede construir la dirección del objeto IPv6:
IPv6Address addr = new IPv6Address(bytes);
Desde allí se puede comprobar si la dirección está asignada IPv4, compatible con IPv4, IPv4 traducido, etc. (hay muchas formas posibles en que IPv6 representa las direcciones IPv4). En la mayoría de los casos, si una dirección IPv6 representa una dirección IPv4, la dirección IPv4 se encuentra en los 4 bytes inferiores, por lo que puede obtener la dirección IPv4 derivada de la siguiente manera. Después, puede convertir de nuevo a bytes, que serán solo 4 bytes para IPv4.
if(addr.isIPv4Compatible() || addr.isIPv4Mapped()) {
IPv4Address derivedIpv4Address = ipv6Address.getLowerIPv4Address();
byte ipv4Bytes[] = ipv4Address.getBytes();
...
}
El javadoc está disponible en el enlace.
Lo sé, pero actualmente la mayoría de las direcciones están dentro del espacio IPV4. Solo necesito un método para convertir esas direcciones que existen en el espacio IPV4. – newbie
Actualice su respuesta, brindando la manera de realizar conversiones antes de su advertencia sobre la compatibilidad con IPv6 tp IPv4. – zeliboba