Apache Commons 十六进制编码错误

发布于 2024-10-19 14:33:36 字数 361 浏览 2 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

陌伤浅笑 2024-10-26 14:33:36

是的 - 对 encodeHex() 的调用返回一个字符数组 (char[]),您只需对其调用 toString 即可。请改用 String(char[]) 构造函数:(顺便说一句

new String(Hex.encodeHex("10".getBytes()))

,我强烈鼓励您不要使用无参数 String.getBytes() 方法,该方法使用平台默认编码是微妙错误的持续来源。)

Yes - the call to encodeHex() returns a char array (char[]) and you're just calling toString on that. Use the String(char[]) constructor instead:

new String(Hex.encodeHex("10".getBytes()))

(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.)

折戟 2024-10-26 14:33:36

根据您给出的链接: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.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文