【发布时间】:2018-12-06 10:52:11
【问题描述】:
我做了一个小项目,将十六进制字符串转换为 ASCII 字符串。当我转换 te 值时,我将其发送给客户。但是我的客户没有重新考虑这个值。
我搜索了原因,发现当我将 ASCII 字符串转换回十六进制时,我得到了一点点差值。所以我认为当我发送数据时出了点问题。但我没有没有如何解决我的问题..
我还尝试先将十六进制转换为 dec,然后再转换为 ascii,我也尝试了更多的 noob whay,只需发送一个命令,例如:
char p = 3;
char d = 4;
bw3.write(p + "" + c + "");
所以这是我现在得到的代码:
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 = "00383700177a0102081c4200000000000001a999c338030201000a080000000000000000184802000007080444544235508001000002080104";
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());
bw3.flush();
我还注意到,当我发送一个只有 4 个字节长或 10 个字节长的命令时,一切都很顺利。我收到了转换后的 ascii 代码。我现在想要发送的命令是 58 字节长。
【问题讨论】: