我正在尝试使用org.apache.commons.codec.binary.Hex对字符串值进行编码和解码:
e.g.:
Hex.encodeHex("10".getBytes()).toString();
然而,这并没有给我十六进制的输出,而是输出类似于以下内容:
有任何想法为什么会发生这种情况?[C@596d444a
我正在尝试使用org.apache.commons.codec.binary.Hex对字符串值进行编码和解码:
e.g.:
Hex.encodeHex("10".getBytes()).toString();
有任何想法为什么会发生这种情况?[C@596d444a
encodeHex()
返回一个字符数组(char[]
),你只是在调用toString
。改为使用String(char[])构造函数即可:new String(Hex.encodeHex("10".getBytes()))
顺便提一句,我强烈建议您不要使用无参的String.getBytes()
方法,因为它使用平台默认编码。这常常会导致微妙的错误。
public static char[] encodeHex(byte[] data)
返回@return包含十六进制字符的char[]
。因此输出是正确的。使用char数组创建一个字符串。