M的前世今生

2022-05-16 15:28:58 字數 686 閱讀 3960

^m 是ascii中的'\r', 回車符,是16進製制的0x0d,8進製的015,十進位制的13。

回想計算機發展,舊的打字機使用兩個字元來開始乙個新行。首先是乙個字元命令使列印頭移回開始位置(回車),然後另乙個字元命令控制向前進紙一行(進紙)。在計算機誕生之初,儲存裝置十分昂貴,於是有人就提出沒有必要用兩個字元來表示一行的結束。unix一族決定只用進紙乙個字元來表示行尾,來自蘋果陣營的人則把回車作為換行的標準,ms-dos(和微軟的windows)仍然決定沿用古老的回車換行傳統。這也意味著如果把檔案從乙個系統移到另乙個不同的系統,你就會遇到與換行相關的問題。

有兩種情況,會出現開啟的檔案都顯示^m符號:

(1) vim被配置為fileformat=unix,而你開啟的檔案都是dos格式的。

(2)你的文字中既有unix的換行符,又有dos的換行符,那麼vim會認為你開啟的是unix的,所以,那些dos的換行符就會出現惱人的^m。

unix格式的換行符為0a(ascii碼)也就是,dos格式的換行符為 0d 0a(也就是),其實就顯示為^m。另外:^l 是ascii 0x0c '\f', 換頁控制符。

解決方法:

(1)若vim版本大於7.1,並想用dos顯示和儲存,如下語句::e ++ff=dos

(2)tr -d "\015" < myfile > myfile_new

(3)dos2unix file_name

LinkedList前世今生

1 linkedlist元素在內部儲存的實現,節點定義即指向前一元素的指標,後一元素的指標,當前元素的值。private static class entry 2 建立乙個空鍊錶。預設有個頭指標header。private transient entryheader new entry null,n...

前世今生 STL

嘛,string就是乙個用於字串處理的標準類庫,但是需要注意的是其速度可能會比直接操縱char陣列要慢一些。reverse這個方法是我一直都想找到但是沒有找到的,在判斷回文的時候格外好用。string s abcdef string ss s ss abcdef reverse ss.begin s...

位址 前世今生

alu arithemetic and logic unit 書面意思是 算術與邏輯部件,運算器,算術與邏輯單元,通俗來講 cpu處理的資料位數。從4位 8位 16位 32位,處理能力越來越強。發問 16位計算能力如何處理20位的位址呢?cs ip 是一組暫存器,用於告知 cpu 當前將要讀取的彙編...