Программа Java для преобразования массива байтов в шестнадцатеричную строку
Массив байтов. Массив байтов в 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(). Для этого,
- Перебрать каждый байт в массиве и вычислить его шестнадцатеричный эквивалент.
- string.format() используется для печати количества разрядов шестнадцатеричного значения и сохранения значения в строке.
- %02X используется для печати добавления двух интервалов между двумя шестнадцатеричными значениями (шестнадцатеричной (X)).
Ниже приведена реализация вышеизложенного подхода:
Подход 2 — Использование операторов побитового сдвига
В предыдущем подходе, если массив байтов становится больше, процесс замедляется. Байтовая операция используется для преобразования массива байтов в шестнадцатеричное значение для повышения эффективности.
Здесь используется беззнаковый оператор сдвига вправо «>>>». А метод toCharArray() преобразует заданную строку в последовательность символов.
Ниже приведена реализация вышеупомянутого подхода –
Подход 3 — Использование предопределенного метода в Integer/Long Class
В классе Integer есть метод toHexString(), который преобразует целое число в его шестнадцатеричный эквивалент. Теперь нам нужно преобразовать массив байтов в целое число (для размера 4) или long (для размера 8) и использовать этот метод (поскольку этот метод присутствует в обоих классах, т. е. Integer и Long с одинаковым именем). ). Для преобразования массива байтов в целое или длинное мы можем использовать метод переноса класса ByteBuffer.
Ниже приведена реализация вышеупомянутого подхода –
Подход 4 — Использование шестнадцатеричного представления BigInteger в Java
Использование шестнадцатеричного представления класса BigInteger в Java — это довольно нежелательный способ преобразования массива байтов в шестнадцатеричную строку из-за его низкой скорости. Здесь также можно заметить, что, поскольку мы имеем дело с числами, а не с произвольными строками байтов, в некоторых случаях начальные нули могут быть опущены.
Ниже приведена реализация вышеупомянутого подхода –