我正在处理一个tcp/ip套接字侦听器,该侦听器在端口80上侦听从远程主机到达的数据。现在这些传入的数据是不可读的格式,所以我保存了这些传入数据,因为它们最初是在一个字符串中,然后将该字符串转换为字符数组,然后对于数组中的每个索引,我已将内容转换为十六进制。现在的问题是,数据转换为十六进制好吧,但在某些地方转换不正确,结果十六进制是'fffd'。在产生的十六进制应该是'bc'(0xBC)的地方,它是'fffd'(0xFF 0xFD)。我不得不相信传入数据的某些部分没有被我的java程序正确读取。 我使用BufferefInputStream和InputStreamReader来读取传入数据,并以下面的方式检查流结束。Java字符串转换为十六进制
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÷d>。
十六进制转换我的程序确实在许多地方,其他的十六进制值应该是已经‘FFFD’,转换,虽然是60%左右的输入字符串的正确
任何关于为什么我得到的十六进制转换不是它应该是什么指针会有很大帮助。
听起来像一个编码问题。您是否考虑了编码中的传入数据的格式? – Aadith 2010-01-21 08:49:17
林相当肯定,这不是一个编码问题,因为我被告知,在VB中完成相同的事情,产生不同的和正确的结果。 – ping 2010-01-21 08:52:13