Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java BufferedReader的输出正在更改位_Java_Android_Sockets - Fatal编程技术网

Java BufferedReader的输出正在更改位

Java BufferedReader的输出正在更改位,java,android,sockets,Java,Android,Sockets,因此,我的应用程序将Android连接到另一台设备,并通过wifi发送/接收串行数据。它能够完美地连接、断开和传输数据,但是,当接收到数据时,这种情况就会发生 我知道传输设备工作正常,并且没有发送不正确的数据 有人知道为什么会发生这种情况或者如何预防吗 我能确定的唯一字节是0x05 输入位:111111111111 01 输入位:00000000 00001100 输入位:111111111111 01 输入位:00000000 00111101 输入位:111111111111 01 输入位:

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

我知道传输设备工作正常,并且没有发送不正确的数据

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

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

输入位:111111111111 01 输入位:00000000 00001100 输入位:111111111111 01 输入位:00000000 00111101 输入位:111111111111 01 输入位:0000000 1 00010011 输入位:00000000 00111101 输入位:111111111111 01

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

注意:

依赖于try块中代码成功与否的代码应该在try块中。 您分配了tBytes,然后什么也没放进去。我无法想象为什么。
会发生什么?您的预期产量和实际产量是多少?谢谢您的建议!使用BufferedInputStream解决了这个问题!对于try块也是一个很好的建议。我省略了填充tBytes的特定代码。
    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);
        }
    }