我正在尝试使用org.apache.commons.codec.binary.Hex对字符串值进行编码和解码:
例如:
Hex.encodeHex("10".getBytes()).toString();
但是,这并没有给我一个十六进制输出,而是类似于此的输出:
[C@596d444a
任何想法为什么会发生这种情况?
我正在尝试使用org.apache.commons.codec.binary.Hex对字符串值进行编码和解码:
例如:
Hex.encodeHex("10".getBytes()).toString();
但是,这并没有给我一个十六进制输出,而是类似于此的输出:
[C@596d444a
任何想法为什么会发生这种情况?
是的 - 调用encodeHex()
返回一个 char 数组 ( char[]
),而您只是在调用toString
它。请改用 String(char[]) 构造函数:
new String(Hex.encodeHex("10".getBytes()))
(顺便说一句,我强烈建议您不要使用String.getBytes()
使用平台默认编码的无参数方法。它是细微错误的持续来源。)
根据您提供的链接:public static char[] encodeHex(byte[] data)
return @return A char[] containing hexadecimal characters
。因此输出是正确的。使用 char 数组创建一个字符串。