0x0A和0x0D之间的差异

时间:2015-10-19 07:07:58

标签: java bluetooth hex character buffer

我正在研究蓝牙,我正在尝试编写代码以便在连接时继续收听输入流,并且我遇到了以下代码片段:

int data = mmInStream.read();
   if(data == 0x0A) { 
                } else if(data == 0x0D) {
                    buffer = new byte[arr_byte.size()];
                    for(int i = 0 ; i < arr_byte.size() ; i++) {
                        buffer[i] = arr_byte.get(i).byteValue();
                    }
                    // Send the obtained bytes to the UI Activity
                    mHandler.obtainMessage(BluetoothState.MESSAGE_READ
                            , buffer.length, -1, buffer).sendToTarget();
                    arr_byte = new ArrayList<Integer>();
                } else {
                    arr_byte.add(data);
                }

有人可以解释0x0A和0x0D之间的区别。并且还简要说明了这段代码。 请分享您的观点。

1 个答案:

答案 0 :(得分:11)

0x开头的值是十六进制。 0x0A\n换行符,0x0D\r返回字符。您可以详细了解如何转换它们here,或使用conversion chart

代码基本上运行不同的逻辑块,具体取决于从data

读取mmInStream的值data

简言之:

  • 0x0A\n时,换行符arr_byte,它会被跳过而不会添加到data
  • 0x0D\r时,返回字符为arr_byte,它会从data构建缓冲区并将缓冲区发送到UI活动
  • arr_byte是任何其他字符时,会将其添加到futex

希望这有帮助。