在Groovy中将String格式的IP地址转换为Hex

时间:2013-11-03 20:55:18

标签: string groovy hex ip-address

我想将字符串格式的IP地址“1.2.3.4”转换为此十六进制格式:0x01020304。

使用InetAddress.getByName时,它还会添加地址类型位,这是我不想要的。

我可以使用其他方法吗?

否则,我考虑按如下方式手动标记String:

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

但后来我不知道如何从那里开始将数字放在所需的十六进制格式上。

1 个答案:

答案 0 :(得分: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()