Как преобразовать массив байтов в шестнадцатеричную строку и обратно
Иногда требуется конвертировать массив байтов в строку в шестнадцатеричном представлении. Возможно, у вас есть некий код или хэш, представленный массивом байтов, который требуется отобразить в шестнадцатеричном виде. Сделать это довольно просто.
Конвертирование массива байтов в шестнадцатеричную строку
Самый простой способ конвертировать байтовый массив в 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)));
Как преобразовать массив байтов в шестнадцатеричную строку и обратно
Преобразование массива байтов в шестнадцатеричную строку и обратно.