Недостаточно репутации, чтобы комментировать ответ Скаффмана, поэтому я добавлю его как отдельный ответ.
Решение, которое предлагает skaffman, является правильным, за одним исключением. BigInteger.toByteArray () возвращает байтовый массив, который может иметь бит начального знака.
byte[] bytes = bigInteger.toByteArray();
byte[] inetAddressBytes;
// Should be 4 (IPv4) or 16 (IPv6) bytes long
if (bytes.length == 5 || bytes.length == 17) {
// Remove byte with most significant bit.
inetAddressBytes = ArrayUtils.remove(bytes, 0);
} else {
inetAddressBytes = bytes;
}
InetAddress address = InetAddress.getByAddress(inetAddressBytes);
PS вышеприведенный код использует ArrayUtils из Apache Commons Lang.