org.apache.commons.codec.binary.Hexを使用して文字列値をエンコードおよびデコードしようとしています:
例えば:
Hex.encodeHex("10".getBytes()).toString();
ただし、これは 16 進数の出力ではなく、次のような出力になります。
[C@596d444a]
なぜこれが起こっているのですか?
org.apache.commons.codec.binary.Hexを使用して文字列値をエンコードおよびデコードしようとしています:
例えば:
Hex.encodeHex("10".getBytes()).toString();
ただし、これは 16 進数の出力ではなく、次のような出力になります。
[C@596d444a]
なぜこれが起こっているのですか?
はい - への呼び出しは char 配列 ( )をencodeHex()
返し、それを呼び出しているだけです。代わりに String(char[]) コンストラクターを使用します。char[]
toString
new String(Hex.encodeHex("10".getBytes()))
(ちなみに、プラットフォームの既定のエンコーディングを使用するパラメーターなしの方法を使用しないことを強くお勧めします。これは、微妙なエラーの絶え間ない原因です。)String.getBytes()
あなたが与えたリンクに従って:public static char[] encodeHex(byte[] data)
return @return A char[] containing hexadecimal characters
。したがって、出力は正しいです。char 配列を使用して文字列を作成します。