以文字格式和二進位制格式開啟檔案,到底有什麼區別?

2021-10-12 06:51:41 字數 736 閱讀 8136

我們知道,open() 函式第二個引數是乙個字串,用於指定檔案的開啟方式,如果該字串**現 b,則表示以二進位制格式開啟檔案;反之,則以普通的文字格式開啟檔案。

那麼,文字檔案和二進位制檔案有什麼區別呢?

實際上,從資料儲存的角度上分析,二進位制檔案和文字檔案沒有區別,它們的內容都是以二進位制的形式儲存在磁碟中的。

我們之所以能看懂文字檔案的內容,是因為文字檔案中採用的是 ascii、utf-8、gbk 等字元編碼,文字編輯器可以識別出這些編碼格式,並將編碼值轉換成字元展示出來。而對於二進位制檔案,文字編輯器無法識別這些檔案的編碼格式,只能按照字元編碼格式胡亂解析,所以最終看到的是一堆亂碼。

使用 open() 函式以文字格式開啟檔案和以二進位制格式開啟檔案,唯一的區別是對檔案中換行符的處理不同。

在 windows 系統中,檔案中用 「\r\n」 作為行末識別符號(即換行符),當以文字格式讀取檔案時,會將 「\r\n」 轉換成 「\n」;反之,以文字格式將資料寫入檔案時,會將 「\n」 轉換成 「\r\n」。這種隱式轉換換行符的行為,對用文字格式開啟文字檔案是沒有問題的,但如果用文字格式開啟二進位制檔案,就有可能改變文字中的資料(將 \r\n 隱式轉換為 \n)。

而在 unix/linux 系統中,預設的檔案換行符就是 \n,因此在 unix/linux 系統中文字格式和二進位制格式並無本質的區別。

總的來說,為了保險起見,對於 windows平台最好用 b 開啟二進位制檔案;對於 unix/linux 平台,開啟二進位制檔案,可以用 b,也可以不用。

二進位制與文字格式

1.文字檔案與二進位制檔案的定義 簡單來說,文字檔案是基於字元編碼的檔案,常見的編碼有ascii編碼,unicode編碼等等。二進位制檔案是基於值編碼的檔案,你可以根據具體應用,指定某個值是什麼意思 這樣乙個過程,可以看作是自定義編碼 從上面可以看出文字檔案基本上是定長編碼的 也有非定長的編碼如ut...

dfm格式轉換 將二進位制格式轉為文字格式

在 dfm檔案與xml檔案互轉 中,用到的dfm檔案必須為文字格式,如果是二進位制格式,處理就會出錯.但是在處理中如何判斷dfm是二進位制檔案,而且再將二進位制檔案轉為文字格式呢.dfm檔案二進位制格式時,其檔案會加乙個檔案頭,其中前3個位元組來標識其為二進位制,這三個位元組分別為 ff,0a,00...

C基礎 文字格式和二進位制格式的區別

原文請見 深入 文字格式和二進位制格式到底有什麼不同?資訊 在機器層面是通過0和1的排列方式來體現的。可是這些0和1如何變成我們在windows環境下的記事本中看到的文字或者檢視器中看到的呢?這裡面就有乙個編碼的問題!所以,二進位制檔案和文字檔案的不同就是編碼層面的不同,二進位制檔案是值編碼,而 a...