Java BufferedReader的输出正在更改位
因此,我的应用程序将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,然后什么也没放进去。我无法想象为什么。Java BufferedReader的输出正在更改位,java,android,sockets,Java,Android,Sockets,因此,我的应用程序将Android连接到另一台设备,并通过wifi发送/接收串行数据。它能够完美地连接、断开和传输数据,但是,当接收到数据时,这种情况就会发生 我知道传输设备工作正常,并且没有发送不正确的数据 有人知道为什么会发生这种情况或者如何预防吗 我能确定的唯一字节是0x05 输入位:111111111111 01 输入位:00000000 00001100 输入位:111111111111 01 输入位:00000000 00111101 输入位:111111111111 01 输入位:
会发生什么?您的预期产量和实际产量是多少?谢谢您的建议!使用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);
}
}