BufferedReader 的输出正在改变位

Output of BufferedReader is changing the bits

所以我的应用程序将 Android 连接到另一台设备并通过 wifi sends/receives 串行数据。它能够完美地连接、断开和传输数据,但是,当接收到数据时,会发生这种情况...

我知道传输设备可以正常工作并且没有发送错误数据。

有人知道为什么会发生这种情况或如何预防吗?

我能确定的唯一字节是 0x05。

传入位:11111111 11111101
输入位:00000000 00001100
传入位:11111111 11111101
输入位:00000000 00111101
传入位:11111111 11111101
输入位:00000001 00010011
输入位:00000000 00111101
输入位:11111111 11111101

    private void asyncRead()
    {
        BufferedReader tIn = null;
        try
        {
            tIn = new BufferedReader(new InputStreamReader(socket.getInputStream()));
        } catch (IOException e)
        {
            e.printStackTrace();
        }

        while (true)
        {
            char[] tBuffer = new char[500];
            int tNumberOfChars = 0;

            try
            {
                tNumberOfChars = tIn.read(tBuffer);
            } catch (IOException e)
            {
                e.printStackTrace();
            }

            if (tNumberOfChars <= 0) continue;

            byte[] tBytes = new byte[tNumberOfChars];

            for (int i = 0; i < tBytes.length; ++i)
            {
                Log.d(TAG, "Incoming Bits: " + Utilities.bitStringFromChar(tBuffer[i]));
            }

            publishProgress(tBytes);
        }
    }

使用 byte[] 缓冲区和 BufferedInputStream 如果您希望按位标识。 BufferedReader 用于当您知道数据是文本并且希望将其转换为 UTF-16 时使用。在这种情况下,你不需要。

注意:

  1. 依赖于 try 块中代码成功的代码应该在 try 块内。
  2. 您分配了 tBytes,然后什么也没放入。我无法想象为什么。