Apache Commons 十六进制编码错误
我正在尝试使用 org.apache.commons .codec.binary.Hex 对字符串值进行编码和解码:
例如:
Hex.encodeHex("10".getBytes()).toString();
但是,这并没有给我十六进制输出,但输出与此类似:
[C@596d444a
有什么想法为什么会发生这种情况吗?
I'm trying to use org.apache.commons.codec.binary.Hex to encode and decode a String value:
e.g.:
Hex.encodeHex("10".getBytes()).toString();
However, this is not giving me a hexadecimal output, but outputs similar to this:
[C@596d444a
Any ideas why this is happening?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的 - 对
encodeHex()
的调用返回一个字符数组 (char[]
),您只需对其调用toString
即可。请改用 String(char[]) 构造函数:(顺便说一句,我强烈鼓励您不要使用无参数
String.getBytes()
方法,该方法使用平台默认编码是微妙错误的持续来源。)Yes - the call to
encodeHex()
returns a char array (char[]
) and you're just callingtoString
on that. Use the String(char[]) constructor instead:(I would strongly encourage you not to use the parameterless
String.getBytes()
method, by the way, which uses the platform default encoding. It's a constant source of subtle errors.)根据您给出的链接:
public static char[]encodeHex(byte[] data)
return@return A char[]包含十六进制字符
。因此输出是正确的。使用 char 数组创建一个字符串。As per the link you have given:
public static char[] encodeHex(byte[] data)
return@return A char[] containing hexadecimal characters
. Hence the output is right. Create a string using the char array.