16 進数が 3 桁の場合、16 進数を文字に変換する際に問題が発生します
10進数値127を超える文字をエスケープおよびエスケープ解除する2つの方法があります
test\\b8
test¸
がエスケープされたときに生成されます
アンエスケープは次のことを行います。
for (int i=0, n=node.length; i<n; i++) {
if(c == "\\"){
char c2 = node[i + 1];
char c3 = node[i + 2];
int i= Integer.parseInt(str,16);
char c = (char)i;
System.out.println("Char is:=" + c);
}
}
出力 -test¸
ご覧のとおり、スラッシュの後の最初の 2 文字を char に変換しています。これはすべてうまくいきます。ただし、3 桁の 16 進数を持つ文字がときどきあります (たとえば、test\\2d8
。これは のようにエスケープ解除する必要がありますtest˘
)。これが私の unescape メソッドに入ると、3 文字すべてが使用されません。最初の 2 つだけなので、間違った結果が生成されます。
2 文字または 3 文字をいつ変換するかを判断する方法はありますか