Иногда требуется конвертировать массив байтов в строку в шестнадцатеричном представлении. Возможно, у вас есть некий код или хэш, представленный массивом байтов, который требуется отобразить в шестнадцатеричном виде. Сделать это довольно просто.
Конвертирование массива байтов в шестнадцатеричную строку
Самый простой способ конвертировать байтовый массив в hex представление – воспользоваться нижеприведённой функцией:
public static String byteArrayToHex(byte[] a) { StringBuilder sb = new StringBuilder(a.length * 2); for(byte b: a) { sb.append(String.format("%02x", b)); } return sb.toString(); }
Использовать её предельно просто:
byte[] password = "secret-password".getBytes(); System.out.println(byteArrayToHex(password));
Конвертирование шестнадцатеричной строки в массив байтов
Если же вам требуется преобразовать строку в шестнадцатеричном представлении в массив байтов, воспользуйтесь следующей функцией:
public static byte[] hexStringToByteArray(String s) { int len = s.length(); byte[] data = new byte[len / 2]; for (int i = 0; i < len; i += 2) { data[i / 2] = (byte) ((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s.charAt(i+1), 16)); } return data; }
Пример использования:
String hex = "7365637265742d70617373776f7264"; System.out.println(new String(hexStringToByteArray(hex)));
Как преобразовать массив байтов в шестнадцатеричную строку и обратно