1. 程式人生 > >回車 換行 0x0D 0x0A CR LF \r \n的來龍去脈

回車 換行 0x0D 0x0A CR LF \r \n的來龍去脈

回車和換行的歷史

在計算機還沒有出現之前,有一種叫做電傳打字機(Teletype Model 33)的玩意,每秒鐘可以打10個字元。但是它有一個問題,就是打完一行,需要回車換行,此過程,要用去0.2秒,正好可以打兩個字元。要是在這0.2秒裡面,又有新的字元傳過來,那麼這個字元將丟失。

於是,研製人員想了個辦法解決這個問題,就是在每行後面加兩個表示結束的字元。一個叫做“回車”,告訴打字機把列印頭定位在左邊界;另一個叫做“換行”,告訴打字機把紙向下移一行。

關於回車和換行的更詳細的解釋

首先,打字機打完一行,意味著,從左到右把一行的字打完了,此時印表機的列印頭處於最右邊,所以,想要繼續打字,需要(1)將把列印頭移動到最左邊,然後(2)打字所用的紙張,換到下一行。

而:

  1. 列印頭移動到最左邊的動作,稱之為回車;

  2. 打字所用的紙張換到下一行,稱之為換行。其是通過打字機的滾筒滾動,將紙向前滾動,就相當於列印頭換了一行,處在新一行的最左邊的開始的位置了,即所謂的走紙。

這就是“回車”和“換行”的來歷,從它們的英語名字上也可以看出一二。

對應到計算機系統中:

回車:將當前游標移動到同一行中的最左邊(假設是從左到右的輸入方式)

換行:保持當前游標的水平位置位置不變,換到下一行。

因此,將回車和換行聯合起來,才是我們所常理解的含義:

輸入完一行後,回車換行到下一行,即游標不僅僅是回到了最左邊,而且也換到了下一行。

不同系統中表示回車換行含義所用字元不同

後來,計算機發明瞭,這兩個概念也就被般到了計算機上。那時,儲存器很貴,一些科學家認為在每行結尾加兩個字元太浪費了,加一個就可以。於是,就出現了分歧。

不同的系統裡面,對於同樣一個”回車換行”的含義,所用的字元不同:

系統型別 回車換行所用字元
Linux/Unix \n = Newline = 0x0A = 10 = LF =Line Feed = 換行 = Ctrl + J
Mac \r = Return = 0x0D = 13 = CR = Carriage Return = 回車 = Ctrl + M
Windows/Dos \r \n = 0x0D 0x0A = CR LF = 回車 換行