プロが教えるわが家の防犯対策術!

String または byte[]をデバッグ目的で16進に変換するには、1文字ずつ処理すればいいのですが、ヘキサ表示なんてだれもが行うものですからすでにライブラリ化されていないでしょうか?

sun.misc.HexDumpEncoder クラスは見つけたのですが、このほかに16進変換に使えるクラスはありませんでしょうか。(apache-commonsなら安心して使えるのでうれしいです)

HexDumpEncoder encoder = new HexDumpEncoder();
String encoded = encoder.encode("abcde".getBytes());
System.out.println(encoded);
出力
0000: 61 62 63 64 65

希望としては 0000:  は不要なので
61 62 63 64 65
6162636465
0x6162636465
などに変換できると助かります。

A 回答 (1件)

IntegerクラスのtoHexString()メソッドでは、だめですか。


(私は、結果の気に入らない部分は適当に加工します。)

この回答への補足

toHexStringを使う場合次のような感じになると思うのですが、毎度実装するのが面倒なのと、符号の考慮を忘れがちなので、できればライブラリを使いたいと思っています。

  static String toHexString(String str, String encode) {
    byte[] bytes = str.getBytes(encode);
    StringBuilder sb = new StringBuilder();
    for (byte b : bytes) {
      int i = b;
      if(i<0) i+=256; // 符号の考慮
      String hex = Integer.toHexString(i).toUpperCase();
      sb.append(hex);
      sb.append(' ');
    }
    return sb.toString();
  }

補足日時:2008/01/27 00:06
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!