3

我正在尝试使用org.apache.commons.codec.binary.Hex对字符串值进行编码和解码:

例如:

Hex.encodeHex("10".getBytes()).toString();

但是,这并没有给我一个十六进制输出,而是类似于此的输出:

[C@596d444a

任何想法为什么会发生这种情况?

4

2 回答 2

7

是的 - 调用encodeHex()返回一个 char 数组 ( char[]),而您只是在调用toString它。请改用 String(char[]) 构造函数:

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

(顺便说一句,我强烈建议您不要使用String.getBytes()使用平台默认编码的无参数方法。它是细微错误的持续来源。)

于 2011-03-01T10:37:57.343 回答
0

根据您提供的链接:public static char[] encodeHex(byte[] data)return @return A char[] containing hexadecimal characters。因此输出是正确的。使用 char 数组创建一个字符串。

于 2011-03-01T10:39:18.150 回答