Использование регулярных выражений для преобразования hex в ascii - PullRequest
0 голосов
/ 31 августа 2018

Я пытаюсь работать с переводчиком на Java, который использует regex для его настройки.

У меня есть следующая шестнадцатеричная строка: 31353333303430353431455232335445303031

и я должен преобразовать его и найти строку ascii следующим образом: 1533040541ER23TE001

У меня вопрос, могу ли я использовать регулярные выражения для преобразования шестнадцатеричной строки в строку ascii.

1 Ответ

0 голосов
/ 01 сентября 2018

Ну, вы МОЖЕТЕ использовать для этого регулярное выражение, но я бы сказал, что это немного излишне.

Лучшее использование для регулярных выражений здесь - удалить все возможные не шестнадцатеричные символы из строки с помощью:

String hexStr = subjectString.replaceAll("[^0-9A-Fa-f]", "");

В любом случае, вот как можно преобразовать шестнадцатеричную строку в простой ASCII:

С RegEx:

StringBuilder output = new StringBuilder("");
Pattern regex = Pattern.compile("[0-9A-Fa-f]{2}");
Matcher regexMatcher = regex.matcher(hexStr);
while (regexMatcher.find()) {
    output.append((char) Integer.parseInt(regexMatcher.group(), 16));
}

output.toString();

Без RegEx:

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));
}

output.toString();
...