当数据发送大于0x80时,如何读取正确的十六进制数据

时间:2015-05-07 07:00:36

标签: java hex

现在我是套接字服务器,我需要从客户端读取十六进制数据。 当客户端发送如下数据:0x55 0x56 0x57时,我可以读取正确的数据 但是当客户端发送如下数据时:0x80 0x81 0x82,我读取的数据是错误的63 63 63.我读取数据的代码是

try
    {
        if((b = (byte) mBufferedReaderClient.read())!= -1)
        {
            y=0xFF&b;
            System.out.println(y);
        }
     }

1 个答案:

答案 0 :(得分:2)

您应该阅读int变量:

try
{
    int b;
    if((b = mBufferedReaderClient.read())!= -1)
    {
        y=0xFF&b;
        System.out.println(y);
    }
}

目前您首先投放到bytebyte类型只能包含-128127的数字,因此您已经丢失了此处的信息。例如,如果收到255,它将自动转换为-1,您将错误地将其解释为流的结尾。