Ошибка кодирования шестнадцатеричного 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.