二進(jìn)制文件可以用文本編輯器編輯嗎(二進(jìn)制文件)
您好,今天小編胡舒來(lái)為大家解答以上的問(wèn)題。二進(jìn)制文件可以用文本編輯器編輯嗎,二進(jìn)制文件相信很多小伙伴還不知道,現(xiàn)在讓我們一起來(lái)看看吧!
1、一、文本文件與二進(jìn)制文件的定義 大家都知道計(jì)算機(jī)的存儲(chǔ)在物理上是二進(jìn)制的,所以文本文件與二進(jìn)制文件的區(qū)別并不是物理上的,而是邏輯上的。
2、這兩者只是在編碼層次上有差異。
3、簡(jiǎn)單來(lái)說(shuō),文本文件是基于字符編碼的文件,常見(jiàn)的編碼有ASCII編碼,UNICODE編碼等等。
4、二進(jìn)制文件是基于值編碼的文件,你可以根據(jù)具體應(yīng)用,指定某個(gè)值是什么意思(這樣一個(gè)過(guò)程,可以看作是自定義編碼。
5、 從上面可以看出文本文件基本上是定長(zhǎng)編碼的(也有非定長(zhǎng)的編碼如UTF-8)。
6、而二進(jìn)制文件可看成是變長(zhǎng)編碼的,因?yàn)槭侵稻幋a嘛,多少個(gè)比特代表一個(gè)值,完全由你決定。
7、大家可能對(duì)BMP文件比較熟悉,就拿它舉例子吧,其頭部是較為固定長(zhǎng)度的文件頭信息,前2字節(jié)用來(lái)記錄文件為BMP格式,接下來(lái)的8個(gè)字節(jié)用來(lái)記錄文件長(zhǎng)度,再接下來(lái)的4字節(jié)用來(lái)記錄bmp文件頭的長(zhǎng)度。
8、 二、文本文件與二進(jìn)制文件的存取 文本工具打開(kāi)一個(gè)文件的過(guò)程是怎樣的呢?拿記事本來(lái)說(shuō),它首先讀取文件物理上所對(duì)應(yīng)的二進(jìn)制比特流,然后按照你所選擇的解碼方式來(lái)解釋這個(gè)流,然后將解釋結(jié)果顯示出來(lái)。
9、一般來(lái)說(shuō),你選取的解碼方式會(huì)是ASCII碼形式(ASCII碼的一個(gè)字符是8個(gè)比特),接下來(lái),它8個(gè)比特8個(gè)比特地來(lái)解釋這個(gè)文件流。
10、例如對(duì)于這么一個(gè)文件流"01000000_01000001_01000010_01000011"(下劃線(xiàn)'_',為了增強(qiáng)可讀性手動(dòng)添加的),第一個(gè)8比特'01000000'按ASCII碼來(lái)解碼的話(huà),所對(duì)應(yīng)的字符是字符'A',同理其它3個(gè)8比特可分別解碼為'BCD',即這個(gè)文件流可解釋成“ABCD”,然后記事本就將這個(gè)“ABCD”顯示在屏幕上。
11、 事實(shí)上,世界上任何東西要與其他東西通信會(huì)話(huà),都存在一個(gè)既定的協(xié)議,既定的編碼。
12、人與人之間通過(guò)文字聯(lián)絡(luò),漢字“媽”代表生你的那個(gè)人,這就是一種既定的編碼。
13、但注意到這樣一種情況,漢字“媽”在日本文字里有可能是你生下的那個(gè)人,所以當(dāng)一個(gè)中國(guó)人A與日本B之間用“媽”這個(gè)字進(jìn)行交流,出現(xiàn)誤解就很正常的。
14、用記事本打開(kāi)二進(jìn)制文件與上面的情況類(lèi)似。
15、記事本無(wú)論打開(kāi)什么文件都按既定的字符編碼工作(如ASCII碼),所以當(dāng)他打開(kāi)二進(jìn)制文件時(shí),出現(xiàn)亂碼也是很必然的一件事情了,解碼和譯碼不對(duì)應(yīng)嘛。
16、例如文件流'00000000_00000000_00000000_00000001'可能在二進(jìn)制文件中對(duì)應(yīng)的是一個(gè)四字節(jié)的整數(shù)int 1,在記事本里解釋就變成了"NULL_NULL_NULL_SOH"這四個(gè)控制符。
17、 文本文件的存儲(chǔ)與其讀取基本上是個(gè)逆過(guò)程。
18、而二進(jìn)制文件的存取顯然與文本文件的存取差不多,只是編/解碼方式不同而已,也不再敘述。
19、 三、文本文件與二進(jìn)制文件的優(yōu)缺點(diǎn) 因?yàn)槲谋疚募c二進(jìn)制文件的區(qū)別僅僅是編碼上不同,所以他們的優(yōu)缺點(diǎn)就是編碼的優(yōu)缺點(diǎn),這個(gè)找本編碼的書(shū)來(lái)看看就比較清楚了。
20、一般認(rèn)為,文本文件編碼基于字符定長(zhǎng),譯碼容易些;二進(jìn)制文件編碼是變長(zhǎng)的,所以它靈活,存儲(chǔ)利用率要高些,譯碼難一些(不同的二進(jìn)制文件格式,有不同的譯碼方式)。
21、關(guān)于空間利用率,想想看,二進(jìn)制文件甚至可以用一個(gè)比特來(lái)代表一個(gè)意思(位操作),而文本文件任何一個(gè)意思至少是一個(gè)字符. 在windows下,文本文件不一定是一ASCII來(lái)存貯的,因?yàn)锳SCII碼只能表示128的標(biāo)識(shí),你打開(kāi)一個(gè)txt文檔,然后另存為,有個(gè)選項(xiàng)是編碼,可以選擇存貯格式,一般來(lái)說(shuō)UTF-8編碼格式兼容性要好一些.而二進(jìn)制用的計(jì)算機(jī)原始語(yǔ)言,不存貯兼容性. 很多書(shū)上還認(rèn)為,文本文件的可讀性要好些,存儲(chǔ)要花費(fèi)轉(zhuǎn)換時(shí)間(讀寫(xiě)要編譯碼),而二進(jìn)制文件可讀性差,存儲(chǔ)不存在轉(zhuǎn)換時(shí)間(讀寫(xiě)不要編解碼,直接寫(xiě)值).這里的可讀性是從軟件使用者角度來(lái)說(shuō)的,因?yàn)槲覀冇猛ㄓ玫挠浭卤竟ぞ呔蛶缀蹩梢詾g覽所有文本文件,所以說(shuō)文本文件可讀性好;而讀寫(xiě)一個(gè)具體的二進(jìn)制文件需要一個(gè)具體的文件解碼器,所以說(shuō)二進(jìn)制文件可讀性差,比如讀BMP文件,必須用讀圖軟件. 而這里的存儲(chǔ)轉(zhuǎn)換時(shí)間應(yīng)該是從編程的角度來(lái)說(shuō)的,因?yàn)橛行┎僮飨到y(tǒng)如windows需要對(duì)回車(chē)換行符進(jìn)行轉(zhuǎn)換(將'',換成'',所以文件讀寫(xiě)時(shí),操作系統(tǒng)需要一個(gè)一個(gè)字符的檢查當(dāng)前字符是不是''或'').這個(gè)在存儲(chǔ)轉(zhuǎn)換在Linux操作系統(tǒng)中并不需要,當(dāng)然,當(dāng)在兩個(gè)不同的操作系統(tǒng)上共享文件時(shí),這種存儲(chǔ)轉(zhuǎn)換又可能出來(lái)。
本文就為大家分享到這里,希望小伙伴們會(huì)喜歡。
作者:baidianfeng365本文地址:http://m.lkxg.cn/bdf/22381.html發(fā)布于 2023-12-26
文章轉(zhuǎn)載或復(fù)制請(qǐng)以超鏈接形式并注明出處白癜風(fēng)知識(shí)網(wǎng)