直接上代码
/**
* 将字符串中16进制的字符提取出来
*
* @param str 带十六进制的字符
* @return 转换后的字符
*/
public static String hexStringToString(String str) {
StringBuilder name = new StringBuilder();
String[] split = str.split("\\\\x");
name.append(split[0]);
for (int i = 1; i < split.length; i++) {
if (!split[i].isEmpty() && split.length > i + 2 && split[i].length() == 2 && split[i + 1].length() == 2 && split[i+2].length() >= 2) {
String name16 = split[i] + split[i + 1] + split[i + 2].substring(0, 2);
// name16 = name16.replace(" ", "");
byte[] baKeyword = new byte[name16.length() / 2];
for (int j = 0; j < baKeyword.length; j++) {
try {
baKeyword[j] = (byte) (0xff & Integer.parseInt(name16.substring(j * 2, j * 2 + 2), 16));
} catch (Exception e) {
e.printStackTrace();
}
}
try {
name16 = new String(baKeyword, StandardCharsets.UTF_8);
} catch (Exception e1) {
e1.printStackTrace();
}
name.append(name16);
name.append(split[i + 2].substring(2));
i = i + 2;
}else {
name.append("\\\\x" + split[i]);
}
}
return name.toString();
}