比方說,例如,我的URL包含以下百分比編碼字符:%80
它顯然不是ascii字符。
如何將此值轉換爲Java中相應的十六進制字符串? 我想沒有luck.Result以下應該是80從編碼百分比的URL中提取十六進制值
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();
}
如果是你需要的'80',爲什麼不去掉百分號?順便說一句,你需要什麼? - 此外,請注意,Java字符是16位,即您將得到2個字節,並且根據字符,這兩個字節可能不爲零(即不是0x00)。 – Thomas 2011-12-27 14:02:35
我需要從kannel中提取二進制SMS的內容,URL以以下格式發送:http:// localhost:8080/rest/MO?source_no = 13013&dest_no =%2B2304232381&message =%00 +%11%15% 00%15%00%00%00%00%81S%16%FCG%D9%89%B8lQi%8D%EA%D6%F2%C1%7B%01%3DL%D9%1B%B4&UDH =%02P% 00'我需要解碼消息參數。有些字符是HEX,其他字符是ASCII。我認爲URLDecoder將能夠做到這一點。你說得對,我可以實現這一點,但我想知道是否有任何功能可以解決這個問題。 – krishnen 2011-12-27 14:11:47
那些非ascii參數不是某些十六進制字符串的一部分,那麼爲什麼要將它轉換爲十六進制呢?只需使用'URLDecoder.decode(...)',即可。我沒有看到再次將'€'('%80')轉換爲十六進制字符串的感覺。 – Thomas 2011-12-27 14:33:54