Я работаю над прослушивателем сокета tcp/ip, который прослушивает порт 80 для данных, поступающих с удаленных хостов. Теперь эти входящие данные находятся в нечитаемом формате, поэтому я сохранил эти входящие данные, поскольку они находятся в строке, а затем преобразовал эту строку в массив символов, а затем для каждого индекса в массиве, я преобразовал содержимое в шестнадцатеричный. Теперь проблема в том, что данные преобразуются в шестнадцатеричные, но в некоторых местах преобразование не является правильным, а итоговая гексагональная часть - «fffd». находится в том месте, где полученный hex должен быть «bc» (0xBC), это «fffd» (0xFF 0xFD). Я вынужден полагать, что некоторые части входящих данных не читаются должным образом с помощью моей java-программы. Я использую BufferefInputStream и InputStreamReader для чтения входящих данных и проверяю конец потока следующим образом.Преобразование строки Java в hex
BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
InputStreamReader isr = new InputStreamReader(is);
while(isr.read()!=-1)
{
...
}
где «соединение» - это объект сокета.
Входные данные, которые им получают через сокет: # SR, IN-0002005,10: 49: 37,16/01/2010, $ < 49X ™ с š @ (bN> ™ м šBB ©: 4ä ýÕ 01300> ÀäCåKöA ÷ Ð>.
шестнадцатиричное преобразование, что моя программа делает имеет „FFFD“ во многих местах, где другие значения шестнадцатеричных должны быть. конверсия, хотя правильно около 60% от входной строки
Любые указатели на то, почему мое преобразование в шестнадцатеричном преобразовании не то, что должно было бы, было бы очень полезно.
звучит как проблема с кодировкой. вы принимаете во внимание формат, в котором поступают входящие данные в кодировке? – Aadith
Я уверен, что это не проблема кодирования, поскольку мне говорят, что то же самое, что и в VB, дает другой и правильный результат. – ping