1. Обзор
В этой краткой статье мы сделаем несколько простых преобразований между шестнадцатеричными и ASCII-форматами.
В типичном случае использования шестнадцатеричный формат может использоваться для записи очень больших целых значений в компактной форме. Например, AD45 короче, чем его десятичный эквивалент 44357, и по мере увеличения значений разница в длине становится еще более заметной.
2. ASCII в Hex
Теперь давайте рассмотрим наши варианты преобразования значений ASCII в шестнадцатеричные:
- Преобразование строки в массив символов
- Приведите каждый char к int
- Используйте Integer.toHexString () , чтобы преобразовать его в шестнадцатеричный
Вот краткий пример того, как мы можем достичь вышеуказанных шагов:
private static String asciiToHex(String asciiStr) { char[] chars = asciiStr.toCharArray(); StringBuilder hex = new StringBuilder(); for (char ch : chars) { hex.append(Integer.toHexString((int) ch)); } return hex.toString(); }
3. Шестнадцатеричный формат в ASCII
Аналогично, давайте сделаем преобразование шестнадцатеричного формата в формат ASCII в три шага:
- Вырезать шестнадцатеричное значение в 2 char группы
- Преобразуйте его в базовое целое число 16 с помощью Integer.parseInt(hex, 16) и приведите к char
- Добавьте все символы в StringBuilder
Давайте рассмотрим пример того, как мы можем достичь вышеуказанных шагов:
private static String hexToAscii(String hexStr) { StringBuilder output = new StringBuilder(""); for (int i = 0; i < hexStr.length(); i += 2) { String str = hexStr.substring(i, i + 2); output.append((char) Integer.parseInt(str, 16)); } return output.toString(); }
4. Тест
Наконец, используя эти методы, давайте проведем быстрый тест:
@Test public static void whenHexToAscii() { String asciiString = "www.baeldung.com"; String hexEquivalent = "7777772e6261656c64756e672e636f6d"; assertEquals(asciiString, hexToAscii(hexEquivalent)); } @Test public static void whenAsciiToHex() { String asciiString = "www.baeldung.com"; String hexEquivalent = "7777772e6261656c64756e672e636f6d"; assertEquals(hexEquivalent, asciiToHex(asciiString)); }
5. Заключение
В заключение мы рассмотрели простейшие способы преобразования между ASCII и Hex с помощью Java.
Реализацию всех этих примеров и фрагментов кода можно найти в проекте github – просто импортируйте проект и запустите его как есть.