0x0A和0x0D之间的差异

Ras*_*ail 7 java buffer hex bluetooth character

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

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);
                }
Run Code Online (Sandbox Code Playgroud)

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

Lin*_*ong 14

起始值0x为十六进制.0x0A\n换行符,0x0D\r返回字符.您可以在此处详细了解如何转换它们,或使用转换表

代码本质上运行不同的逻辑块,具体取决于data从中读取的值mmInStream

简述:

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

希望这可以帮助.