我正在研究一个tcp/ip套接字侦听器,它在端口80上侦听从远程主机到达的数据.现在这些传入的数据是不可读的格式,因此我保存了这些传入数据,因为它们最初是在字符串中,然后将此字符串转换为字符数组,然后对于数组中的每个索引,我已将内容转换为十六进制.现在问题是数据转换为十六进制正常,但在某些地方转换不正确,结果十六进制部分是'fffd'.在得到的十六进制应该是'bc'(0xBC)的地方,它是'fffd'(0xFF 0xFD).我不得不相信我的java程序无法正确读取传入数据的某些部分.
BufferedInputStream is = new BufferedInputStream(connection.getInputStream());
InputStreamReader isr = new InputStreamReader(is);
while(isr.read()!=-1)
{
...
}
Run Code Online (Sandbox Code Playgroud)
其中'connection'是套接字对象.
我通过套接字输入的数据是#SR,IN-0002005,10:49:37,16/01/2010,$ <49X™š@(bN>™BB©:4äý01300>ÀäCåKöA÷ d>.
我的程序所做的十六进制转换在其他十六进制值应该在的许多地方都有'fffd'.但是转换对于输入字符串的大约60%是正确的
关于为什么我的结果十六进制转换不是它应该是什么的任何指针将是非常有帮助的.
我认为你不应该使用读者.读者用于阅读字符,您似乎正在处理二进制数据.直接使用InputStream并在收到字节时对其进行转换.java中的字符是Unicode字符,我猜你是问题的根源.
| 归档时间: |
|
| 查看次数: |
2418 次 |
| 最近记录: |