Q質問

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で質問しましょう!

新しく質問する

このQ&Aを見た人はこんなQ&Aも見ています

注目の記事

「遼河はるひさんからの質問のベストアンサーでもれなくプレゼント!」

遼河はるひさんとアンジャッシュ児嶋さんが3月21日(土)・22日(日)に北陸新幹線で金沢へ旅行します。
あなたの回答で、素敵な旅のプランを教えてあげてください!

あなたの回答がベストアンサーに選ばれると、全員にQUOカード5,000円分プレゼント!

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


このQ&Aを見た人がよく見るQ&A

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

教えて!gooトラベル金沢

おすすめ情報