0

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

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

我可以使用其他方法吗?

否则,我考虑手动标记字符串,如下所示:

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

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

4

1 回答 1

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()
于 2013-11-03T23:39:08.793 回答