Java IP地址的哈希函数

Java IP地址的哈希函数,java,hash,ip-address,uniqueidentifier,Java,Hash,Ip Address,Uniqueidentifier,我需要从ip地址生成唯一的ID(字符串),反之亦然。唯一Id必须为8-9个字符。java中是否有任何函数可以做到这一点?由于IPv4地址由4个字节组成,您可以简单地使用十六进制表示,这将导致8个字符 这可以是一种实现: public static String ipToId(String ip) { return Arrays.stream(ip.split("\\.")) .map(Integer::parseInt) .map(number ->

我需要从ip地址生成唯一的ID(字符串),反之亦然。唯一Id必须为8-9个字符。java中是否有任何函数可以做到这一点?

由于IPv4地址由4个字节组成,您可以简单地使用十六进制表示,这将导致8个字符

这可以是一种实现:

public static String ipToId(String ip) {
    return Arrays.stream(ip.split("\\."))
        .map(Integer::parseInt)
        .map(number -> String.format("%02X", number))
        .collect(Collectors.joining());
}
相反,可以通过以下方式实现:

public static String idToIp( String id )
{
    return Stream.of( id )
            .map( Base64.getDecoder()::decode )
            .flatMapToInt( bytes -> IntStream.range( 0, bytes.length )
                    .map( index -> bytes[index] & 0xFF ) )
            .mapToObj( String::valueOf )
            .collect( Collectors.joining( "." ) );
}

检查此链接,对于IPv6,这个问题是不可能的,因为无法将16字节的地址减少为8或9个字符的字符串,而不存在collisions@MaxFichtelmann如何从输出字符串生成ip地址?我为反向操作添加了一个函数