質問

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

通報する

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

このQ&Aは役に立ちましたか?0 件

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

新しく質問する

注目の記事

おしトピアプリ登場記念!コメントで最大1万円分のギフト券があたる!

話題のトピックにさくっとコメントできる「おしトピ」にAndroid版アプリに続きiPhoneアプリも登場! どちらかのアプリをダウンロードして指定のオーダーにコメントした方に抽選で最大1万分のアマゾンギフト券をプレゼント! フジテレビ出身のフリーアナウンサー長谷川豊氏の質問にも回答受付中!

このQ&Aを見た人が検索しているワード


新しく質問する

このカテゴリの人気Q&Aランキング

毎日見よう!教えて!gooトゥディ