0

文字列形式の IP アドレス「1.2.3.4」を 16 進数形式の 0x01020304 に変換したいと考えています。

InetAddress.getByName を使用すると、望ましくない Address-Type ビットも追加されます。

これに使用できる他の方法はありますか?

それ以外の場合は、次のように文字列を手動でトークン化することを考えました。

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

しかし、そこから先に進み、目的の16進形式に数字を配置する方法がわかりません。

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 に答える