使用正则表达式将十六进制转换为ascii

问题描述 投票:0回答:1

我尝试在Java中使用正则表达式来配​​置它的翻译器。

我有以下十六进制字符串:31353333303430353431455232335445303031

我必须转换它并找到ascii字符串,如下所示:1533040541ER23TE001

我的问题是我可以使用正则表达式将十六进制字符串转换为ascii字符串。

regex hex ascii
1个回答
0
投票

好吧,你可以使用正则表达式,但我会说这有点过分。

这里正则表达式的最佳用法是从字符串中删除所有可能的非十六进制字符:

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();
© www.soinside.com 2019 - 2024. All rights reserved.