Как правильно отформатировать String / char в шестнадцатеричное значение - PullRequest
0 голосов
/ 09 сентября 2018

Я пытаюсь преобразовать строку в ее шестнадцатеричное представление. У меня есть следующий (тестовый) вход �¾��Hello World!

Правильное шестнадцатеричное представление должно быть: 00 BE 00 00 48 65 6C 6C 6F 20 57 6F 72 6C 64 21

Я пытаюсь отформатировать строку с String.format("%x", new BigInteger(toConvert.getBytes("ISO-8859-1"))).split("(?<=\\G.{2})");

Но эта операция форматирования игнорирует первый символ (если это шестнадцатеричный ноль) и приводит к BE 00 00 48 65 6C 6C 6F 20 57 6F 72 6C 64 21

Я уже немного поигрался с ролями вокруг "%x", но ничего не помогло.

Но я уверен, что вы можете мне помочь:)

1 Ответ

0 голосов
/ 09 сентября 2018

Для форматирования с начальными нулями укажите width отформатированного шестнадцатеричного значения и запросите начальные нули.

например. если результат 6 байтов, вместо формата "%x", используйте формат "%012x".

Для вашего кода сделайте следующее: "%0" + toConvert.length() * 2 + "x"

...