2013年5月28日火曜日

[Java]文字列の16進数変換&復元

ソケットでバイナリ通信する場合や、バイナリ形式のファイルを操作するときがあります。 で、その処理がうまくいっているかをダンプしたい時って結構あると思います。
そんな時、.NETであれば「[.NET]文字列の16進数変換&復元」でConvertというクラスで簡単に操作できます。で、Javaでそんなクラスってないかなぁ?って調べてみたらありました。

バイト列と文字列の相互変換って結構あるので、こういうのがあると助かるんですよね。Java1.6から利用可能なので、大半の仕事で適用可能ですね。
コードはこんな感じ。


public static void main(String[] args) {

    // 文字列からUTF8のバイト列に変換
    byte[] data = "1192つくろう鎌倉幕府!!".getBytes();

    // 001122形式の文字列に変換
    String hexText = DatatypeConverter.printHexBinary(data);
    System.out.println("16進文字列 [" + hexText + "]");

    // UTF8のバイト列からstringに変換
    String decText = new String(DatatypeConverter.parseHexBinary(hexText));
    System.out.println("復元結果 [" + decText + "]");
}

■実行結果
16進文字列 [31313932E381A4E3818FE3828DE38186E98E8CE58089E5B995E5BA9CEFBC81EFBC81]
復元結果 [1192つくろう鎌倉幕府!!]

・・・しかし、AndroidのSDKには含まれません。。ということで参考になるソースはこちら。 DatatypeConverterImpl

0 件のコメント: