Просто используйте цикл for, чтобы пройти каждую пару символов в строке, преобразовать их в символ и затем ударять символ в конце строителя строки:
String hex = "75546f7272656e745c436f6d706c657465645c6e667375635f6f73745f62795f6d757374616e675c50656e64756c756d2d392c303030204d696c65732e6d7033006d7033006d7033004472756d202620426173730050656e64756c756d00496e2053696c69636f00496e2053696c69636f2a3b2a0050656e64756c756d0050656e64756c756d496e2053696c69636f303038004472756d2026204261737350656e64756c756d496e2053696c69636f30303800392c303030204d696c6573203c4d757374616e673e50656e64756c756d496e2053696c69636f3030380050656e64756c756d50656e64756c756d496e2053696c69636f303038004d50330000";
StringBuilder output = new StringBuilder();
for (int i = 0; i < hex.length(); i+=2) {
String str = hex.substring(i, i+2);
output.append((char)Integer.parseInt(str, 16));
}
System.out.println(output);
Или (Java 8+) если вы чувствуете себя особенно неуклюже, воспользуйтесь печально известным хаком «разделение строки с фиксированной шириной», чтобы вместо этого сделать однострочную с потоками:
System.out.println(Arrays
.stream(hex.split("(?<=\\G..)")) ///2273268/razbienie-stroki-na-kazhdyi-n-i-simvol
.map(s -> Character.toString((char)Integer.parseInt(s, 16)))
.collect(Collectors.joining()));
В любом случае это дает несколько строкначиная со следующего:
uTorrent \ Completed \ nfsuc_ost_by_mustang \ Pendulum-9,000 Miles.mp3
Хммм ...: -)