たとえば、次のパーセントでエンコードされた文字を含む URL があるとしましょう: %80
これは明らかに ASCII 文字ではありません。
この値を Java の対応する 16 進文字列に変換するにはどうすればよいでしょうか。運が悪かったので、次のことを試しました。結果は80になるはずです。
public static void main(String[] args) {
System.out.print(byteArrayToHexString(URLDecoder.decode("%80","UTF-8").getBytes()));
}
public static String byteArrayToHexString(byte[] bytes)
{
StringBuffer buffer = new StringBuffer();
for(int i=0; i<bytes.length; i++)
{
if(((int)bytes[i] & 0xff) < 0x10)
buffer.append("0");
buffer.append(Long.toString((int) bytes[i] & 0xff, 16));
}
return buffer.toString();
}