0x0A 和 0x0D 的区别

新手上路,请多包涵

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

 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 之间的区别吗?并对这段代码进行简要说明。欢迎分享你的看法。

原文由 Rasik Suhail 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.2k
2 个回答

0x 开头的值是十六进制。 0x0A 0x0D \n \r 您可以 在此处 阅读有关如何转换它们的更多信息,或使用 转换表

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

简要地:

  • when the data is 0x0A , the newline character \n , it is skipped and not added to the arr_byte
  • when the data is 0x0D , the return character \r , it builds a buffer from arr_byte and send the buffer to the UI Activity
  • data 是任何其他字符时,它被添加到 arr_byte

希望这可以帮助。

原文由 Ling Zhong 发布,翻译遵循 CC BY-SA 3.0 许可协议

我的理解是,回车符和换行符的起源是 1901 年 Murray 对 Baudot 代码 (ITU1) 的修改。

这实现了电传打字机和电传打字机的标准化。

代码的当前名称与原始含义有关。回车导致打印“回车”“返回”到左侧。换行导致送纸机构前进一行。


在现代用法中,CR 和 LF 代码具有大致相同的含义,尽管这现在完全取决于软件。值得注意的是,不同的操作系统在简单文本文件中使用 CR 和/或 LF 作为“行分隔符”。这些约定是特定于操作系统的。

在某些时候,原来的名称“line feed”变成了常用的“newline”。然而,在 EBCDIC 中有一个独特的 NL 代码……通常映射到 Unicode 中的 NEL (U+85)。

参考资料:维基百科

原文由 Stephen C 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题
logo
Stack Overflow 翻译
子站问答
访问
宣传栏