String 在Groovy中将字符串格式的IP地址转换为十六进制

String 在Groovy中将字符串格式的IP地址转换为十六进制,string,groovy,hex,ip-address,String,Groovy,Hex,Ip Address,我想将字符串格式的IP地址“1.2.3.4”转换为十六进制格式:0x01020304 当使用InetAddress.getByName时,它还添加了地址类型位,这是我不想要的 有没有其他方法可以帮我 否则,我考虑按如下方式手动标记字符串: def digitsList = "1.2.3.4".tokenize('.'); 但是,我不知道如何从那里开始将数字放在所需的十六进制格式上。您可以: String hex = '0x' + '128.234.1.1'.tokenize( '.' )*.t

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

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

有没有其他方法可以帮我

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

def digitsList = "1.2.3.4".tokenize('.');
但是,我不知道如何从那里开始将数字放在所需的十六进制格式上。

您可以:

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()

尝试此操作时,我得到以下错误:groovy.lang.MissingMethodException:没有方法签名:[B.encodeHex()适用于参数类型:()值:[]@ferguior您是否使用groovy v1.8.6之前的版本(2012年2月)?替代方法工作正常。事实上,我没有使用最新的groovy版本。谢谢!