`
diecui1202
  • 浏览: 96915 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

回车(CR)与换行(LF)

    博客分类:
  • dzh
阅读更多

一、“回车”(Carriage Return)和“换行”(Line Feed)的来历

 

      在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。

      于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历。

 

二、计算机里的“回车”与“换行”

请看下面这段程序:
public class CRLFTest {

    public static void main(String[] args) {
        // 1. 中间包含\n
        String str = new String("Hello, World! \nThis is new line.");
        byte[] bytes = str.getBytes();

        System.out.println(str);
        for (int i = 0; i < bytes.length; i++) {
            System.out.print(bytes[i] + " ");
        }
        System.out.println();

        // 2. 中间包含\n\r
        str = new String("Hello, World! \n\rThis is new line.");
        bytes = str.getBytes();

        System.out.println(str);
        for (int i = 0; i < bytes.length; i++) {
            System.out.print(bytes[i] + " ");
        }
        System.out.println();

        // 3. 中间包含\r
        str = new String("Hello, World! \rThis is new line.");
        bytes = str.getBytes();

        System.out.println(str);
        for (int i = 0; i < bytes.length; i++) {
            System.out.print(bytes[i] + " ");
        }
        System.out.println(new Date());
    }
}
 以下是该程序在Windows, Linux, Mac三种环境下的运行结果:
1、Windows下的运行结果:
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
Hello, World! 

This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 Wed May 25 11:28:42 CST 2011
 2、Linux下的运行结果:
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
 3、Mac下的运行结果:
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
Hello, World! 

This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 10 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
Hello, World! 
This is new line.
72 101 108 108 111 44 32 87 111 114 108 100 33 32 13 84 104 105 115 32 105 115 32 110 101 119 32 108 105 110 101 46 
 从上面的运行结果可以看出:
1、Windows与Mac的结果一致;
2、三种平台下,\n的实际结果是“回车” + “换行”;
3、Windows、Mac下的\r也是“回车” + “换行”,但是Linux下,\r却是回到当前行首,会抹到以前的输出结果;

 

分享到:
评论

相关推荐

    最直观、最全的ASCLL码列表

    常见ASCII码的大小规则 0~9~Z~z 1)数字比字母要小。如 “7”“F”; 2)数字0比数字9要小,并... 换行LF为0x0A;回车CR为0x0D;空格为0x20;“0”为0x30; “A”为0x41;“a”为0x61。另外还有128-255的ASCII字符。

    UE中文版编辑器

    UE中文版编辑器绿色免安装版 文档大小不受限制,即使是数兆字节的...-自动换行模式转换到CR/LF's 允许用硬回车将自动换行写入文件 -CR/LF's 转换到自动换行(从文件删除 CR/LF's) -支持模板 -代码折叠、、、

    3-2019051115-邓芷灵-Internet应用与应用层协议分析1

    (图中的\r\n即“CR”“LF”,分别代表“回车”和“换行”,开始行及首部行结尾固有)(2)HTTP响应报文分析逐行分析如下:(图中的\r\n即“CR”“LF

    超级串口调试工具V6.0

    发送字符串可自动加回车换行等行尾标识,系统提供回车换行(CRLF)、回车(CR)、换行(LF)及自定义行尾标识。  10.绿色软件,单个文件即可执行,不会给您的机器增加任何负担。  11.VS.NET 2005平台,C#2.0开发...

    【python】文件编码/解码

     ASCII码是西欧编码的方式,采取7位编码,所以是2^7=128,共可以表示128个字符,包括34个字符,(如换行LF,回车CR等),其余94位为英文字母和标点符号及运算符号等。GB2321  GB2312 是对 ASCII 的中文扩展。兼容...

    CentOS7运行.sh脚本提示syntax error: unexpected end of file的解决方法

    shell脚本在本地电脑编辑的,格式是dos(可以用vi编辑该shell脚本,进入命令行模式,输入:set ff 回车即可看到左下角显示fileformat=dos),在dos/window下按一次回车键实际上输入的是“回车(CR)”和“换行(LF)”...

    Git处理换行符问题

    Note:引自回车(CR)与换行(LF),'r'和'n'的区别.这就是造成问题的根源——即如果你使用的是windows系统,而你的小伙伴用的是Mac的话,当你们使用git协同开发软件时,就会出现换行符不统一的问题。git其实可以自己处理...

    javaweb基础课程精品课材料

    ...它的发展是万维网协会(World Wide ...●可选的消息体 请求行和标题必须以&lt;CR&gt;&lt;LF&gt;作为结尾(也就是,回车然后换行)。空行内必须只有&lt;CR&gt;&lt;LF&gt;而无其他空格。在HTTP/1.1协议中,所有的请求头,除post外,都是可选的

    GIT 换行符自动转换导致整个文件被修改的解决方案

    Unix/Linux使用的是LF,Mac后期也采用了LF,但Windows一直使用CRLF【回车(CR, ASCII 13, \r) 换行(LF, ASCII 10, \n)】作为换行符。而git入库的代码采用的是LF格式,它考虑到了跨平台协作的场景,提供了“换行符自动...

Global site tag (gtag.js) - Google Analytics