На данный момент я занят созданием небольшой программы, которая отправляет шестнадцатеричный поток клиенту.
Теперь я делю поток и преобразую каждые 2 цифры в символ.Вывод этого я преобразую обратно в строку, чтобы я мог отправить данные.Для отладки я использую wireshark, чтобы проверить, верны ли отправленные данные.
Но это не правильно.И я знаю почему.Потому что, например, я использую b7 (декабрь 183), а char поддерживает только до 127. Но теперь проблема в том, что я не знаю, как решить проблему ..
Можете ли вы помочь исправить мой код?Спасибо !
ServerSocket welcomeSocket2 = new ServerSocket(9999);
Socket socket2 = welcomeSocket2.accept();
OutputStream os3 = socket2.getOutputStream();
OutputStreamWriter osw3 = new OutputStreamWriter(os3);
BufferedWriter bw3 = new BufferedWriter(osw3);
String hex4 = "00383700177a01020a6cb7000000000000018fffffff7f030201000a080000000000000000184802000007080444544235508001000002080104";
StringBuilder output4 = new StringBuilder();
for (int i =0; i< hex4.length(); i +=2){
String str4 = hex4.substring(i, i+2);
int outputdecimal = Integer.parseInt(str4,16);
char hexchar = (char)outputdecimal;
System.out.println(str4);
output4.append(hexchar);
}
bw3.write(output4.toString());
Вот что я получаю в Wireshark:
0000 00 38 37 00 17 7a 01 02 0a 6c c2 b7 00 00 00 00
0010 00 00 01 c2 8f c3 bf c3 bf c3 bf 7f 03 02 01 00
0020 0a 08 00 00 00 00 00 00 00 00 18 48 02 00 00 07
0030 08 04 44 54 42 35 50 c2 80 01
Но правильные данные, которые я должен получить в Wireshark, таковы:
0000 00 38 37 00 17 7a 01 02 0a 6c b7 00 00 00 00 00
0010 00 01 8f ff ff ff 7f 03 02 01 00 0a 08 00 00 00
0020 00 00 00 00 00 18 48 02 00 00 07 08 04 44 54 42
0030 35 50 80 01 00 00 02 08 01 04