1. Общ преглед
В тази бърза статия ще направим няколко прости преобразувания между Hex и ASCII форматите.
В типичен случай на използване, Hex форматът може да се използва за записване на много големи цели числа в компактна форма. Например AD45 е по-кратък от десетичния еквивалент 44357 и с увеличаване на стойностите разликата в дължината става още по-изразена.
2. ASCII до Hex
Сега, нека разгледаме нашите опции за конвертиране на ASCII стойности в Hex:
- Преобразуване на String в масив char
- Изхвърлете всеки знак в int
- Използвайте Integer.toHexString (), за да го конвертирате в Hex
Ето един бърз пример как можем да постигнем горните стъпки:
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
По същия начин, нека направим преобразуване на формат Hex в ASCII в три стъпки:
- Нарежете стойността Hex в 2 групи символи
- Преобразувайте го в основата 16 Integer, като използвате Integer.parseInt (шестнадесетичен, 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 - просто импортирайте проекта и стартирайте както е.