终于记住回车和换行cr lf的来由和含义了 -参考: http://www.cnblogs.com/me115/archive/2011/04/27/20307

 2023-09-05 阅读 300 评论 0

摘要:回车: carriage return, 是将光标在同一行中, 回到当前行的 行首. 回来的本意就是 返回.. 所以 是同一行的行首. CR 换行: line feed: feed: 饲养(动物); 喂养(孩子); 供给, 供应的意思. LF 回车 用 \r 符号表示, 十进制值是 13, 十六进制是: 0x 0d. 换行: 用 \n 表示, 十进制

回车: carriage return, 是将光标在同一行中, 回到当前行的 行首. 回来的本意就是 返回.. 所以 是同一行的行首. CR
换行: line feed: feed: 饲养(动物); 喂养(孩子); 供给, 供应的意思. LF

回车 用 \r 符号表示, 十进制值是 13, 十六进制是: 0x 0d.
换行: 用 \n 表示, 十进制值是10, 十六进制是 0x 0a

unix 类系统, 适用 的是 换行, lf, \n, mac系统适用 的是 回车 \r, CR 而windows 系统使用的是 回车+ 换行: CR/LF
所以, unix/mac系统下的文本文件, 在windows下, 会全部是一行, 而 windows ->unix系的文本文件, 在每一行的末尾, 会多一个控制符号 : ^M就是 \r的符号.

历史由来:

  • 电传打字机, 每秒打10个字, 1个字占0.1秒, 打完一行字后, 要把打字头 移动到下一行的开头, 需要 花 0.2秒时间. 那么, 如果 这时候 , 有字符连续传送过来时, 就会有2个字符被丢失.
  • 所以, 如果在 "要打的文字信息内容 的每一行末尾, 加上两个 字符(0.2秒) 的 "占位符" --什么字符都可以, 只是起到占位的作用, 那么当 打字机的打印头移动下一行的开头位置时, 就刚好过去0.2秒, 那么文字信息的内容, 里面两个占位符的时间也是0.2秒, 就刚好接到 新的字符内容, 而不会丢失.

-为了将这两个占位字符 更形象化, 就跟 打字头 的动作 相一致, 打字机的打字头 移动一行的头部, 给一个符号 叫 carriage return 即CR即 回车( 这个车, 指的是 打字机头)
而打字机的纸张向上/下 送给新的一行, 叫做 line feed,即LF/

这个就是 CR/LF的由来. 后来将这个 设计 移动/移植到 计算机中来, 让 每个文本文件 的 每一行, 也用 这种分割换行符号. 当时由于存储器比较昂贵, 对于计算机中的文本文件, 如果在每一行的末尾 加上这些 CR/LF符号后, 比如会增加文件的大小, 增加文件的字节数/ 存储大小. 所以, 在不同的系统中, 对这个 CR LF就发生了分歧,

在 类Unix系统中,使用 \n LF 来分割,
在Mac中使用 \r来分割,
而在 Win系统中, 则适用 CR lf : \r\n来表示.

注意 , 这个时候, 的 CR LF 已经就没有 电传打字机的 0.2 秒占位符的 意思了. 而是, 只是说 作为 文本文件中, 每一行的 分割符号了. 更有甚者, 就是 在 程序设计, 编程语言中, 将这些 \n \r作为语句的结束符号, 作为 编程语言的 编译器/解释器 作为 语法 分析的 主要 依据了!

而 linux中的 col 命令: 就是 : CR or LF 的意思??? 就是用来过滤 控制字符的 意思, 主要 用在 如 man command等命令 的 输出 中 用 管道 来 过滤 这些 控制 字符 然后输出 到 普通文件中 比如: man ls | col > ls.help

cols------------???????????/

转载于:https://www.cnblogs.com/bkylee/p/7842890.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/193.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息