Некоторые из кодов в этой статье выдержаются из Интернета и слегка организованы для преобразования между байтами и шестнадцатеричной.
/** * Ссылка Apache Commons <a * href = "http://commons.apache.org/codec/"> http://commons.apache.org/codec/ </a> * байт занимает 8 бит, а шестнадцатеричные символы занимают 4 бита. Следовательно, один байт может быть преобразован в два соответствующих шестнадцатеричных символов, то есть высокие 4 и низкие 4 бита байта преобразуются в соответствующие шестнадцатеричные символы H и L соответственно и объединены. То же самое относится и к противоположному преобразованию. **/public class hex {/*** Вывод для установления шестнадцатеричных символов*/private static final char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; / *** Вывод для установления шестнадцатеричных символов*/ private static final char [] digits_lower = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'}; /*** Преобразовать массив байтов в шестнадцатеричный массив персонажей. * * Поскольку два символа используются для представления байта, возвращаемая длина char [] будет в два раза превышает длину параметра байта []. * * @param data * byte [] используется для конвертации в шестнадцатеричные символы * @return char [], содержащий шестнадцатеричные символы */ public static char [] encodehex (final byte [] data) {return encodeHex (data, true); } /*** Преобразовать байтовый массив в шестнадцатеричный массив. * * Поскольку два символа используются для представления байта, возвращаемая длина char [] будет в два раза превышает длину параметра байта []. * * @param Data * byte [] Для преобразования в шестнадцатеричные символы * @param tolowercase * <code> true </code> передача в нижний формат, <code> false </code> передача в формат верхней передачи * @return char [] содержащий символы шестнадцатеристи */public static char [] encodehex (final byte [] data, final boolean tolower -tolowersacle) (DIGEXEX (DIGITSEX? Digits_upper); } /*** Преобразовать байтовый массив в шестнадцатеричный массив. * * Поскольку два символа используются для представления байта, возвращаемая длина char [] будет в два раза превышает длину параметра байта []. * * @ @ @byte [] для преобразования в шестнадцатеричные символы * @param todigits * Alphabet для управления выводом * @return char [], содержащий шестнадцатеричные символы */ защищенный статический char [] encodehex (final byte [] data, final char [] todigits) {int l = data.length; char [] out = new char [l << 1]; // Два символа формируют гекс. Значение. for (int i = 0, j = 0; i <l; i ++) {out [j ++] = todigits [(0xf0 & data [i]) >>> 4]; out [j ++] = todigits [0x0f & data [i]]; } вернуться; } /*** Преобразовать байтовый массив в шестнадцатеричную строку. * * Поскольку два символа используются для представления байта, возвращаемая длина строки будет в два раза превышает длину параметра байта []. * * @param data * byte [] для преобразования в шестнадцатеричные символы * @return hex string */ public static String encodeHexstr (final byte [] data) {return encodeHexstr (data, true); } /*** Конвертировать байтовый массив в шестнадцатеричную строку. * * Поскольку два символа используются для представления байта, возвращаемая длина строки будет в два раза превышает длину параметра байта []. * * @param data * byte [] Для преобразования в шестнадцатеричные символы * @param tolowercase * <code> true </code> передача в нижний формат, <code> false </code> передача в формат верхнего регистра * @return hexstring */public Static String EncodeHexstr (byte [] data, boolean tolowercase) {return encodeHexstr (data, digits_lapper: digits_lapper? } /*** Конвертировать байтовый массив в шестнадцатеричную строку. * * Поскольку два символа используются для представления байта, возвращаемая длина строки будет в два раза превышает длину параметра байта []. * * @param data * byte [] для преобразования в шестнадцатеричные символы * @param todigits * Alphabet для управления выводом * @return hex string */ retenceed static String encodeHexstr (byte [] data, char [] todigits) {return new String (encodeHex (data, toDigits)); } / ** * Конвертировать шестнадцатеричные символы массивы в байтовые массивы * * @param data * hex char [] * @return byte [] * @throhs runtimeexception * Если длина массива символов шестнадцатеричного шестигранного if ((len & 0x01)! = 0) {бросить новое runtimeexception («нечетное количество символов»); } // Байт соответствует двум шестнам -символам, установите размер байта [] на половину размера char [] byte [] out = new Byte [len >> 1]; // Два символа формируют гекс. Значение. for (int i = 0, j = 0; j <len; i ++) {int f = todigit (data [j], j) << 4; J ++; f = f | todigit (data [j], j); J ++; out [i] = (byte) (f & 0xff); } вернуться; } /*** Преобразовать шестнадцатеричные символы в целое число. * * @param ch * символы, которые должны быть преобразованы в целые числа * @param index * Положение символа в массиве символов * @return anteger * @throhs runtimeexception * Когда CH не является законным шестигранным символом, добавьте это исключение */ Protected int todigit (final char ch, final index) {final int digit = характер. if (digit == -1) {бросить новое runtimeexception («незаконное шестигранное символ» + ch + »в индексе» + index); } return Digit; } public static void main (string [] args) {string srcstr = "helloworld!"; String encodestr = encodehexstr (srcstr.getbytes (), false); String decodestr = new String (decodehex (encodestr.tochararray ())); System.out.println ("Source String:" + srcstr); System.out.println («Стандартный кодируется как hex:» + encodest); System.out.println ("шестнадцатеричный декодирован как строка:" + decodest); }}