当前位置: 首页 > article >正文

“换行”与“回车”

        在处理Android的bootanimation.zip文件时,压缩包里有一个desc.txt文件,而制作该zip包时,总喜欢在windows系统下制作打包,但将其push到android系统相应的/system/media/目录下后,修改了该文件的访问权限,重启下android后,Logo呢?一片漆黑。太伤心了,查找了一下,从网下下载了一个zip包,同样操作,都可以正常显示,为什么呢?只能比对查找一下,发现网上的zip包使用windows下打开其中的txt文件,都是显示在一行的,而我自己做的打开后都是换行了,故而在linux下打开,发现网上的没有异常显示,都是换行的,而我的打开后,在每行后面多了个^M符号,纠结,继续查找,终于发现了隐含其中的秘密:“回车”、“换行”,这两者有区别吗?在上学时,高中老师就跟我们说是一样的,于是怀着深信不疑的态度,继续纠结着。直到今天,不行,我必须解开这秘密了。于是总结如下:

    1、曾经的历史

      在计算机出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符,不过它有一个问题是打完一行字符换行的时候,要用去0.2秒,这正好够打两个字符。如果在这0.2秒里,又有新的字符传过来,那么这些新传过来的字符将丢失。于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做"回车",告诉打字机把打印头定位在左边界;另一个叫做"换行",告诉打字机把纸向下移一行。 

    2、今天的区别

      而电传打字机的处理方式被引入计算机系统,在计算机刚发明之初,由于存储器太贵,不同的专家对于在一行后面加CRLF两个字符觉得太浪费,加一个就可以了,于是有了如下的三分天下处理:

 OS 功能符 C语言表示  16进制表示
 Windows 回车+换行(CR+LF) \r\n 0x0d0a
 Linux/Unix 换行符(LF) \n 0x0a
 MAC 回车符(CR) \r 0x0d

      从表格一看,一切问题都清楚了,其中CR对应CTRL+M,而LF对应CTRL+J。在windows下编程打开文件时,有以“文本”、“二进制”的形式打开文件,而此时,以“文本”(即ASCII码)打开时,回车换行符会识别为LF,而以“二进制”方式则会识别为CRLF,故而在网络传输时更需要注意需要以“二进制”的方式传输数据,以适应多平台处理,屏蔽平台差异。

    3、为何叫CRLF

      CR:Carriage Return,回车,0x0d;

      LF:Line Feed,换行,0x0a。


http://www.kler.cn/a/373505.html

相关文章:

  • linux之网络子系统- TCP连接建立过程 三次握手四次挥手
  • Flutter鸿蒙next 封装 Dio 网络请求详解:登录身份验证与免登录缓存
  • 排序算法汇总
  • (五)Web前端开发进阶2——AJAX
  • Java 使用Maven Surefire插件批量运行单元测试
  • windows下安装python库wordCloud报错
  • OpenCV 学习笔记
  • 同步和异步
  • AprilTag在相机标定中的应用简介
  • 20 Docker容器集群网络架构:三、Docker集群部署
  • window11使用wsl2安装Ubuntu22.04
  • Linux_04 Linux常用命令——tar
  • 深度学习(九):推荐系统的新引擎(9/10)
  • 【Java并发编程】信号量Semaphore详解
  • docker pull 拉取镜像失败,使用Docker离线包
  • 零基础学西班牙语,柯桥专业小语种培训泓畅学校
  • Si24R05:125K接收2.4G收发SoC芯片规格书
  • CSS行块标签的显示方式
  • 无人机之目标检测算法篇
  • 全自动采集、即时传输:RFID技术为BD数字化装备场尽力!
  • 嵌入式C语言字符串具体实现
  • linux离线安装Ollama并完成大模型配置(无网络)
  • 快速上手 Rust——实用示例
  • (五)Web前端开发进阶2——AJAX
  • int类型的长度为什么不统一?int类型和硬件寄存器有多统一?数据类型长度是编译器决定的?
  • 微服务之间的横向关系与微服务与数据层之间的纵向关系