Рубрики
Без рубрики

Преобразование Hex в ASCII в Java

Как программно преобразовать Hex в ASCII (и обратно) в Java.

Автор оригинала: baeldung.

1. Обзор

В этой краткой статье мы сделаем несколько простых преобразований между шестнадцатеричными и ASCII-форматами.

В типичном случае использования шестнадцатеричный формат может использоваться для записи очень больших целых значений в компактной форме. Например, AD45 короче, чем его десятичный эквивалент 44357, и по мере увеличения значений разница в длине становится еще более заметной.

2. ASCII в Hex

Теперь давайте рассмотрим наши варианты преобразования значений ASCII в шестнадцатеричные:

  1. Преобразование строки в массив символов
  2. Приведите каждый char к int
  3. Используйте 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 в три шага:

  1. Вырезать шестнадцатеричное значение в 2 char группы
  2. Преобразуйте его в базовое целое число 16 с помощью Integer.parseInt(hex, 16) и приведите к char
  3. Добавьте все символы в 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 – просто импортируйте проект и запустите его как есть.