2013-11-03 3 views
0

문자열 형식의 "1.2.3.4"IP 주소를 0x01020304로 변환하려고합니다.문자열 형식의 IP 주소를 Groovy의 16 진수로 변환하십시오.

InetAddress.getByName을 사용할 때 원하지 않는 Address-Type 비트도 추가됩니다.

내가 사용할 수있는 다른 방법이 있습니까?

def digitsList = "1.2.3.4".tokenize('.'); 

을하지만 내가 원하는 진수 형식의 자리를 마련하기 위해 거기에서 진행하는 방법을 알고하지 않습니다

그렇지 않으면, 나는 다음에 대해 수동으로 문자열을 토큰 화 생각했다.

답변

1

당신은 할 수 :

String hex = '0x' + '128.234.1.1'.tokenize('.')*.toInteger() 
                .asType(byte[]) 
                .encodeHex() 

그루비의 모든 버전의 작업을해야 대안이 될 것입니다 : 그 시도 할 때

String hex = '0x' + '128.234.1.1'.tokenize('.').collect { 
    String.format('%02x', it.toInteger()) 
}.join() 
+0

, 나는 다음과 같은 오류가 발생합니다 : groovy.lang.MissingMethodException를 : 방법의 서명 없음 : [B. 인수 유형에 encodeHex()를 사용할 수 있습니다.() values ​​: [] – ferguior

+0

@ferguior Groovy pre v1.8.6 (2012 년 2 월)을 사용하고 있습니까? –

+0

@ferguior가 작동해야하는 대체 버전을 추가했습니다 :-) –

관련 문제