LT;DR
Hexをbyte配列に変換して`new String(byte[])`したら0x00とか0x01とか入ってきてムキーってなったので調べた。ASCII制御文字を文字列から除去する。
```java:replaseAsciiCC.java // hexからbyteに変換するのに必要。 import javax.xml.bind.DatatypeConverter;// class定義とかmethod定義とか略
String hex = "0100313233343536373839302D5E5C"; // 先頭4byteが制御文字
byte[] hexFromByte = DatatypeConverter.parseHexBinary(hex);
String strFromByte = new String(hexFromByte);
String resultStr strFromByte.replaceAll("\p{C}", ""));
// 制御文字が消えて"1234567890-^"って出力されるはず。
System.out.println(resultStr);
なぜ"\\p{C}"でいいのかはこの辺。
https://regular-expressions.mobi/unicode.html?wlr=1
改行コードも除去されるので注意。
Java以外の言語で使えるかは解らぬ。