一个很有趣的事情。
今天在维基百科上查看http header Content-Length资料的时候,里面提到了CR和LF。我们都知道CR和LF代表换行的意思,但是我并不知道为什么换行要用CR和LF表示,也即它的来历。
于是我去查CR和LF的资料。
CR表示"Carriage Return",LF表示"Line Feed"。
关于“回车”(carriage return)和“换行”(line feed)这两个概念的来历和区别。
在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
记忆中的回车(carriage return)
终于知道为什么键盘上的enter键叫回车了。carriage本身有车的意思,return有回的意思,直译过来当然就是“回车”了。我猜这个carriage,应该就是打印机上的机械臂。
关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符 后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动 作叫“回车”。
区别
CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D。
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A。
Dos和windows采用回车+换行CR/LF表示下一行。
而UNIX/Linux采用换行符LF表示下一行。
苹果机(MAC OS系统)则采用回车符CR表示下一行。
联想
记得在之前用wireshark做抓包实验时,末尾的字符有很多0d,0a的,现在回想起来不就是换行符的意思吗?


总结
现在我们看到的精致世界,也是由最根本的道理组合而成的。
网友评论