文字檔案與二進位制檔案

2021-06-28 15:05:01 字數 1086 閱讀 6392

這裡談談文字檔案與二進位制檔案以及c語言讀寫這兩種檔案的標準介面。

【具體到物理儲存時都是二進位制的,關鍵是儲存前對資料的編碼有區別。】

文字檔案與二進位制檔案在計算機檔案系統中的物理儲存都是二進位制的,也就是在物理儲存方面沒有區別都是01碼,這個沒有異議,他們的區別主要在邏輯儲存上,也就是編碼上。

文字檔案格式儲存時是將值作為字元然後存入其字元編碼的二進位制,文字檔案用『字元』作為單位來表示和儲存資料,比如對於1這個值,文字檔案會將其看做字元『1』然後儲存其ascii編碼值(這裡假定是ascii編碼),這樣在物理上就是0x31這個二進位制值,而若是二進位制儲存1,則直接儲存其二進位制值,比如如果程式中是處理1為整數則儲存的二進位制值就是 0x00000001 (4位元組)。

當然如果程式本來就是按字元儲存的 也就是 char ch ='1' ; 則二進位制儲存後值就是其ascii碼,因為該變數的二進位制本來就是其ascii碼。可以總結出二進位制檔案就是值本身的編碼,那麼就是不定長的編碼了,因為值本身就是不等位元組的,如整數4個位元組那麼儲存在二進位制檔案就是這四個位元組的原生二進位制值。

綜上,可以知道文字檔案與二進位制檔案就是編碼方式不一樣而已,而這個是使用者行為,把乙個資料以什麼樣的編碼(字元還是值本身)存入檔案是由使用者主動選擇的,也就是寫入的介面選擇,如果以二進位制介面方式寫入檔案那麼就是乙個二進位制檔案,如果以字元方式寫入檔案就是乙個文字檔案了。既然有寫入時候的編碼也就會有讀出的編碼,只有兩個編碼對應才能讀出正確的結果,如用記事本開啟乙個二進位制檔案會呈現亂碼的,這裡稍微提一下字尾名,字尾名並不能確定其是否就是文字檔案,二進位制檔案也可以是txt字尾名,字尾名只是用來關聯開啟程式,給使用者做備註用的,與檔案的具體編碼沒有關係。

可以使用字元介面讀寫二進位制檔案,只需要做些處理即可,所以所謂的二進位制檔案,文字檔案主要體現在讀寫方式這裡。

此外windows有乙個明顯的區別是對待文字檔案讀寫的時候,會將換行 \n自動替換成 \r\n。

最後文字檔案和二進位制檔案主要是windows下的概念,unix/linux並沒有區分這兩種檔案,他們對所有檔案一視同仁,將所有檔案都看成二進位制檔案。

標準i/o庫中 主要使用 fread/fwrite來讀寫二進位制檔案,而對於文字檔案可以使用 fread/fwrite fgetc/fputc fprintf等等。

文字檔案與二進位制檔案

從本質上說所有檔案都是二進位制檔案,文字i o是在二進位制i o基礎上提供的一層抽象,它封裝了字元的編碼和解碼過程。在文字i o中自動進行編碼與解碼。在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有規定格式的,由可理解的的ascii以及其它編碼文字組成的檔...

文字檔案與二進位制檔案

維基百科 二進位制檔案一般指包含ascii及擴充套件ascii字元中編寫的資料或程式指令的檔案。廣義的二進位制檔案即為檔案,由檔案在外部儲存裝置的存放方式為二進位制而得名。狹義的二進位制檔案即指除文字檔案以外的檔案。簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編...

文字檔案與二進位制檔案

什麼是文字檔案,什麼是二進位制檔案?在windows和dos系統中,狹義的文字檔案是指擴充套件名為txt的檔案。實際上,那些沒有格式的,由可理解的ascii以及其他編碼文字組成的檔案都是文字檔案,如c原始檔,html超文字檔案,xml。除此之外的其他檔案都是二進位制檔案,如word檔案doc,影象格...