Ошибка кодирования шестнадцатеричного Apache Commons

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

например:

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

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

[C @ 596d444a

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

2 ответа

Решение

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

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

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

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

Другие вопросы по тегам