Скажем, например, у меня есть 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
Мне нужно извлечь содержимое бинарного 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% БСГ% D9% 89% B8lQi% 8D% EA% D6% F2% С1% 7B% 01% 3DL% D9% 1B% В4 & UDH =% 02P% 00 'Мне нужно декодировать параметр сообщения. Некоторые персонажи находятся в HEX, остальные - в ascii. Я думал, что URLDecoder сможет это сделать. Вы правы в том, что я могу реализовать это, но мне интересно, есть ли какие-либо функции для этого. – krishnen
Эти параметры, отличные от ascii, не являются частью какой-либо шестнадцатеричной строки, так почему вы хотите снова преобразовать ее в шестую? Просто используйте 'URLDecoder.decode (...)', что будет делать. Я не вижу смысла переводить '' '('% 80') в шестую строку снова. – Thomas