• 締切済み

String または byte[]を16進に変換するには

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 などに変換できると助かります。

みんなの回答

  • _ranco_
  • ベストアンサー率58% (126/214)
回答No.1

IntegerクラスのtoHexString()メソッドでは、だめですか。 (私は、結果の気に入らない部分は適当に加工します。)

thamansa
質問者

補足

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();   }

関連するQ&A