我想将字符串格式的IP地址“1.2.3.4”转换为此十六进制格式:0x01020304。
使用InetAddress.getByName时,它还会添加地址类型位,这是我不想要的。
我可以使用其他方法吗?
否则,我考虑按如下方式手动标记String:
def digitsList = "1.2.3.4".tokenize('.');
但后来我不知道如何从那里开始将数字放在所需的十六进制格式上。
答案 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()