zoukankan      html  css  js  c++  java
  • CR与LF

    CR与LF

    CR(carriage return),中文名称“回车”;LF(line feed),中文名称“换行”。无论是初学编程的小白还是入行十年的资深,总会有人搞不清楚这两者的区别。回车与换行到底是什么关系呢?

    CR与LF的来历

    首先需要说明的是“回车”指的是' ',ASCII码为0xOD(13),而换行符指的是' ',ASCII码为0x0A(10)。
    关于回车与换行的来历,网上有一段不错描述可以参考。

    在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在
    这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
    于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。
    这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
    后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
    Unix/Linux 系统里,每行结尾只有“<换行>”,即“ ”;Windows系统里面,每行结尾是“<回车><换行>”,即“ ”;Mac系统里,每行结尾是“<回车>”,即“ ”(现在已改成跟Unix/Linux一样的" ")。

    不同换行符的影响

    一个直接后果是,Unix/Linux/Mac系统下的文件在Windows里打开的话,会出现换行丢失,整个文本会乱成一团。(类似UltraEdit 这种编辑器可以正确识别); 而反过来就会出现^M的符号(这是Unix/Linux 等系统下规定的特殊标记,占一个字符大小,不是^和M的组合,打印不出来的,可以通过ctrl+V, ctrl+M 输入)。Unix/Linux 下很多文本编辑器(命令行)会在显示这个标记之后,补上一个自己的换行符,以避免内容混乱(只是用于显示,补充的换行符不会写入文件,有专门的命令将Windows换行符替换为Unix/Linux 换行符)。 Unix/Linux 系统下的换行符在Windows系统的文本编辑器中会被忽略,整个文本会乱成一团。

    不同换行表示的互相转换

    现在的编辑器如UltraEdit之类的都具有转换的功能,而IDE如JetBrains系列的产品,也都具有换行转换的功能。总之,这并不是一件很难的事情,你只需要在网上搜一下就很容易得到一个可行的解决方案。

  • 相关阅读:
    java语言基础1问题汇总
    java从命令行接受多个数字求和输出
    关于Django迁移出现问题
    python中在ubuntu中安装虚拟环境及环境配置
    MVC与MVT
    前端性能优化
    less、sass、stylus
    bootstrap
    Swiper4.x使用方法
    swiper
  • 原文地址:https://www.cnblogs.com/micrari/p/6864838.html
Copyright © 2011-2022 走看看