Ошибка кодирования шестнадцатеричного Apache Commons - PullRequest
1 голос
/ 01 марта 2011

Я пытаюсь использовать org.apache.commons.codec.binary.Hex для кодирования и декодирования строкового значения:

например:

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

Однако, это не дает мне шестнадцатеричный вывод, а вывод похож на это:

[C @ 596d444a

Есть идеи, почему это происходит?

Ответы [ 2 ]

5 голосов
/ 01 марта 2011

Да - вызов encodeHex() возвращает массив символов (char[]), и вы просто вызываете toString для этого. Вместо этого используйте конструктор String (char []):

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

(я бы настоятельно , кстати, не рекомендовал бы использовать метод String.getBytes() без параметров, который использует кодировку платформы по умолчанию. Это постоянный источник тонких ошибок.)

0 голосов
/ 01 марта 2011

По указанной вами ссылке: public static char[] encodeHex(byte[] data) возврат @return A char[] containing hexadecimal characters. Следовательно, вывод правильный. Создайте строку, используя массив символов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...