【发布时间】:2017-09-01 02:40:24
【问题描述】:
我需要从一个 IP 地址生成一个唯一的 ID(一个字符串),反之亦然。唯一 ID 必须为 8-9 个字符。有没有什么函数可以在java中做到这一点?
【问题讨论】:
标签: java hash ip-address uniqueidentifier
我需要从一个 IP 地址生成一个唯一的 ID(一个字符串),反之亦然。唯一 ID 必须为 8-9 个字符。有没有什么函数可以在java中做到这一点?
【问题讨论】:
标签: java hash ip-address uniqueidentifier
由于 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( "." ) );
}
【讨论】: