2017-04-06 5 views
0

IP 주소에서 고유 한 ID (문자열)를 생성해야하며 그 반대의 경우도 마찬가지입니다. 고유 ID는 8-9 자 여야합니다. 자바에서 그렇게 할 수있는 함수가 있습니까? 역을 통해 수행 할 수IP 주소의 해시 함수

public static String ipToId(String ip) { 
    return Arrays.stream(ip.split("\\.")) 
     .map(Integer::parseInt) 
     .map(number -> String.format("%02X", number)) 
     .collect(Collectors.joining()); 
} 

:는 IPv4 주소는 4 바이트로 구성되어 있기 때문에

+1

확인이 링크 https://www.mkyong.com/java/java-convert-ip-address-to-decimal-number/ –

답변

2

, 당신은 단순히이 구현 될 수 8 자

될 것 진수 표현을 사용할 수 있습니다 :

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

방법이 없기 때문에 및 IPv6에 대한 질문은 불가능하다 충돌 위험없이 16 바이트 주소를 8 또는 9 문자열로 줄이십시오. – Alnitak

+0

@MaxFichtelmann 출력 문자열에서 IP 주소를 다시 생성하는 방법은 무엇입니까? –

+0

역 동작을위한 함수를 추가했습니다. –