Программа Java для преобразования массива байтов в шестнадцатеричную строку

Опубликовано: 15 Сентября, 2022

Массив байтов. Массив байтов в Java — это массив, используемый только для хранения байтовых типов данных. Значение по умолчанию каждого элемента массива байтов равно 0.

Шестнадцатеричная строка — шестнадцатеричная строка представляет собой комбинацию цифр 0-9 и символов AF , точно так же, как двоичная строка состоит только из 0 и 1. Например: «245FC» — это шестнадцатеричная строка.

Постановка задачи . При наличии массива байтов задача состоит в том, чтобы преобразовать массив байтов в шестнадцатеричную строку .

Пример:

Input : byteArray = { 9, 2, 14, 10 }
Output: 9 2 E A

Input : byteArray = { 7, 12, 13, 127 }
Output: 7 C D 7F

Преобразование байтового массива в шестнадцатеричную строку включает изменение массива байтового типа данных на его шестнадцатеричное значение в виде строки. Есть множество способов сделать то же самое; некоторые из них перечислены ниже.

Подходы:

  • Использование метода Format() в Java
  • Использование операторов побитового сдвига
  • Использование предопределенного метода в Integer/Long Class
  • Использование шестнадцатеричного представления BigInteger в Java

Подход 1 — Использование метода Format() в Java

Для указанного преобразования можно использовать метод Java String Format(). Для этого,

  1. Перебрать каждый байт в массиве и вычислить его шестнадцатеричный эквивалент.
  2. string.format() используется для печати количества разрядов шестнадцатеричного значения и сохранения значения в строке.
  3. %02X используется для печати добавления двух интервалов между двумя шестнадцатеричными значениями (шестнадцатеричной (X)).

Ниже приведена реализация вышеизложенного подхода:

Подход 2 — Использование операторов побитового сдвига

В предыдущем подходе, если массив байтов становится больше, процесс замедляется. Байтовая операция используется для преобразования массива байтов в шестнадцатеричное значение для повышения эффективности.

Здесь используется беззнаковый оператор сдвига вправо «>>>». А метод toCharArray() преобразует заданную строку в последовательность символов.

Ниже приведена реализация вышеупомянутого подхода –

Подход 3 — Использование предопределенного метода в Integer/Long Class

В классе Integer есть метод toHexString(), который преобразует целое число в его шестнадцатеричный эквивалент. Теперь нам нужно преобразовать массив байтов в целое число (для размера 4) или long (для размера 8) и использовать этот метод (поскольку этот метод присутствует в обоих классах, т. е. Integer и Long с одинаковым именем). ). Для преобразования массива байтов в целое или длинное мы можем использовать метод переноса класса ByteBuffer.

Ниже приведена реализация вышеупомянутого подхода –

Подход 4 — Использование шестнадцатеричного представления BigInteger в Java

Использование шестнадцатеричного представления класса BigInteger в Java — это довольно нежелательный способ преобразования массива байтов в шестнадцатеричную строку из-за его низкой скорости. Здесь также можно заметить, что, поскольку мы имеем дело с числами, а не с произвольными строками байтов, в некоторых случаях начальные нули могут быть опущены.

Ниже приведена реализация вышеупомянутого подхода –