淺談C語言中文字檔案與二進位制檔案
阿新 • • 發佈:2019-01-24
C語言中,按檔案中的資料組織形式來分,資料檔案可分為ASCII碼檔案(即文字檔案)和二進位制檔案。
文字檔案在磁碟中存放時每個字元對應一個位元組,用於存放對應的ASCII碼。
二進位制檔案把資料按其在記憶體中的儲存形式存放在磁碟上,一個位元組並不一定對應一個字元。
對於ASCII編碼,它是單位元組編碼系統,使用7位或8位二進位制數組合來表示128 或256 種可能的字元,標準ASCII碼是使用7位,剩下的那位最高位為0。故而標準ASCII碼可以表示的字元是128個,涵蓋了大小寫字母,數字0~9,標點符號以及特殊的控制字元。詳細的可以檢視ASCII的百度詞條。
對於字母的處理,二者並無區別。而對於數字的處理則有不同:
比如10這個數,在ASCII編碼中,把它當做兩個字元即用一個位元組來表示1,用另一位元組來表示0,對應的編碼是0011000100110000
在二進位制編碼中,採用的方式並不是一個字元對應一個位元組,而是資料在C語言中的型別來編碼,比如 是int型的10,那麼就用4個位元組表示( 具體int型是用4個還是2個位元組表示可能會有出路,visual c++ 6.0中是用4位元組表示,不管是幾個,直接呼叫int x = sizeof(int);這個語句,最後x的值便是int型佔據的位元組數)若就是用四個位元組表示int型的數,那麼對應的編碼應該是00000000_00000000_00000000_00001010(中間的_是為了便於閱讀手動新增的)。四個位元組可以表示的數的範圍是0~65535,也就是在這之間的數都是用四個位元組表示出來。
可以看到,文字檔案中一個字元就是對應著一個位元組,而二進位制檔案中,需要按照該數在程式中的資料型別來確定用幾個位元組來表示它。