我正在研究蓝牙,并且尝试编写代码以在连接时继续监听输入流,并且遇到了以下代码片段:
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有什么区别。并给出有关此代码的简要说明。
请分享您的意见。
最佳答案
以0x
开头的值是十六进制。 0x0A
是\n
换行符,而0x0D
是\r
返回符。您可以阅读有关如何将它们转换为here或使用conversion chart的更多信息。
该代码本质上运行不同的逻辑块,具体取决于从data
读取什么mmInStream
值
简要地:
data
为0x0A
时,换行符\n
会被跳过,并且不会添加到arr_byte
data
为0x0D
时,即返回字符\r
,它从arr_byte
构建一个缓冲区并将该缓冲区发送到UI Activity data
是任何其他字符,则将其添加到arr_byte
希望这可以帮助。