现在我是套接字服务器,我需要从客户端读取十六进制数据。 当客户端发送如下数据:0x55 0x56 0x57时,我可以读取正确的数据 但是当客户端发送如下数据时:0x80 0x81 0x82,我读取的数据是错误的63 63 63.我读取数据的代码是
try
{
if((b = (byte) mBufferedReaderClient.read())!= -1)
{
y=0xFF&b;
System.out.println(y);
}
}
答案 0 :(得分:2)
您应该阅读int
变量:
try
{
int b;
if((b = mBufferedReaderClient.read())!= -1)
{
y=0xFF&b;
System.out.println(y);
}
}
目前您首先投放到byte
。 byte
类型只能包含-128
到127
的数字,因此您已经丢失了此处的信息。例如,如果收到255
,它将自动转换为-1
,您将错误地将其解释为流的结尾。