我正在研究蓝牙,我正在尝试编写代码以便在连接时继续收听输入流,并且我遇到了以下代码片段:
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之间的区别。并且还简要说明了这段代码。 请分享您的观点。
答案 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
希望这有帮助。