2013-11-03 78 views
0

我想將字符串格式「1.2.3.4」中的IP地址轉換爲此十六進制格式:0x01020304。在Groovy中將字符串格式的IP地址轉換爲十六進制

當使用InetAddress.getByName時,它也增加了我不想要的地址類型位。

有沒有其他方法可以用於此?

否則,我想到了手動標記化的字符串如下:

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

但是當時我不知道如何從那裏繼續奠定所需的十六進制格式的數字。

回答

1

你可以這樣做:

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

應該對Groovy的所有版本的另一種方法是:

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增加了一個可以工作的替代版本:-) –

相關問題