java寫(xiě)二進(jìn)制文件 文本文件跟二進(jìn)制文件有什么區(qū)別?
文本文件跟二進(jìn)制文件有什么區(qū)別?文本文件是完全由可見(jiàn)字符組成的文件??梢?jiàn)字符是指ASCII碼為32到126的字符、回車(ASCII碼13)、換行符(ASCII碼10)、制表符(ASCII碼9)以及所有
文本文件跟二進(jìn)制文件有什么區(qū)別?
文本文件是完全由可見(jiàn)字符組成的文件??梢?jiàn)字符是指ASCII碼為32到126的字符、回車(ASCII碼13)、換行符(ASCII碼10)、制表符(ASCII碼9)以及所有中文字符(包括其他字符集,如朝鮮語(yǔ)、日語(yǔ)、阿拉伯語(yǔ)等)。如果是Unicode文本,還包括ASCII代碼0。有許多方法可以定義二進(jìn)制文件。從廣義上講,二進(jìn)制文件是指計(jì)算機(jī)中的所有文件(包括文本文件),因?yàn)橛?jì)算機(jī)中的所有文件實(shí)際上都是以二進(jìn)制模式存儲(chǔ)的,也就是說(shuō),每個(gè)字符(包括可見(jiàn)字符和控制字符)最終以0和1的形式存儲(chǔ)在硬盤(pán)和其他介質(zhì)中(這就是為什么計(jì)算機(jī)只識(shí)別0和1這兩個(gè)數(shù)字的原因,因?yàn)楠M義的二進(jìn)制文件是相對(duì)于文本文件的,即,只要文件中除了可見(jiàn)字符外還包含其他字符(主要是控制字符),它就是一個(gè)二進(jìn)制文件;比狹義的二進(jìn)制文件更具體的定義是可執(zhí)行文件(exe)、庫(kù)函數(shù)文件(DLL))圖片、視頻、,數(shù)據(jù)庫(kù)文件等都是由程序代碼、機(jī)器代碼、特定二進(jìn)制代碼和數(shù)據(jù)組成的實(shí)用文件。
二進(jìn)制文件與文本文件的區(qū)別?
二進(jìn)制文件和文本文件在定義和訪問(wèn)模式上存在差異。1文本文件是一種計(jì)算機(jī)文件。它是一個(gè)典型的序列文件,其邏輯結(jié)構(gòu)屬于流文件。簡(jiǎn)而言之,文本文件是基于字符編碼的文件,常用的編碼方式有ASCII編碼、Unicode編碼等。二進(jìn)制文件:它是一個(gè)基于值編碼的文件。您可以根據(jù)特定的應(yīng)用程序指定值的含義(這樣的過(guò)程可以視為自定義編碼)。一般來(lái)說(shuō),用戶不能直接閱讀,只有通過(guò)相應(yīng)的軟件才能顯示出來(lái)。二進(jìn)制文件通常是可執(zhí)行程序、圖形、圖像、聲音等。從上面可以看出,文本文件和二進(jìn)制文件的區(qū)別不是物理上的,而是邏輯上的。兩者只是編碼級(jí)別不同。文本文件基本上是定長(zhǎng)編碼(也有非定長(zhǎng)編碼,如UTF-8)。二進(jìn)制文件可以看作是可變長(zhǎng)度的代碼,因?yàn)樗鼈兪侵荡a。多少位代表一個(gè)值完全取決于您。2文本工具打開(kāi)一個(gè)文件,讀取與該文件對(duì)應(yīng)的二進(jìn)制位流,根據(jù)所選擇的解碼方法解釋該流,并顯示解釋結(jié)果。一般來(lái)說(shuō),您選擇的解碼方法是ASCII碼(ASCII碼的一個(gè)字符是8位)。接下來(lái),它將解釋8位和8位的文件流。無(wú)論記事本打開(kāi)什么文件,它都將根據(jù)已建立的字符編碼(如ASCII代碼)工作。所以當(dāng)他打開(kāi)二進(jìn)制文件時(shí),不可避免地會(huì)出現(xiàn)亂碼。解碼和解碼不一致。文本文件的存儲(chǔ)和讀取基本上是一個(gè)相反的過(guò)程。二進(jìn)制文件的存取方式與文本文件相似,但編解碼方式不同。二進(jìn)制文件是將存儲(chǔ)器中的數(shù)據(jù)按其在存儲(chǔ)器中的存儲(chǔ)形式輸出到磁盤(pán)上,即存儲(chǔ)原始形式的數(shù)據(jù)。文本文件是數(shù)據(jù)的終端形式二進(jìn)制數(shù)據(jù)輸出到磁盤(pán)存儲(chǔ),也就是存儲(chǔ)終端形式的數(shù)據(jù)
總之,所有文件都是二進(jìn)制存儲(chǔ)的。
(補(bǔ)充:事實(shí)上,十進(jìn)制并不重要,因?yàn)槭M(jìn)制可以相互轉(zhuǎn)換)
但是,文件通常分為文本文件和二進(jìn)制文件。文本文件是指以ASCII、Unicode等編碼格式存儲(chǔ)的文本文件;二進(jìn)制文件可以有多種存儲(chǔ)結(jié)構(gòu)。
例如,ASCII編碼格式中字符a和B的對(duì)應(yīng)十六進(jìn)制數(shù)字分別為0x41和0x42(二進(jìn)制為1000001和1000010)。我可以直接創(chuàng)建一個(gè)文件,并將十六進(jìn)制數(shù)據(jù)0x41和0x42寫(xiě)入其中(請(qǐng)注意,數(shù)據(jù)是直接寫(xiě)入的,而不是一般的文本輸入)。保存之后,我可以用一個(gè)通用的文本編輯器打開(kāi)它,我可以看到屏幕上顯示的字符串AB。
至于ASCII,它的全稱是美國(guó)信息交換標(biāo)準(zhǔn)碼(American Standard Code for information interchange)。它只是一種編碼格式,它規(guī)定了在計(jì)算機(jī)中如何用二進(jìn)制數(shù)來(lái)表示字符。
附上相應(yīng)的Python代碼:
文本文件和二進(jìn)制文件的區(qū)別是什么?
C語(yǔ)言的文本文件和二進(jìn)制文件:計(jì)算機(jī)的存儲(chǔ)在物理上是二進(jìn)制的,所以文本文件和二進(jìn)制文件的區(qū)別不是物理的,而是邏輯的。兩者只是在編碼層次上有所不同。簡(jiǎn)而言之,文本文件是基于字符編碼的文件,常用的編碼方式有ASCII編碼、Unicode編碼等。二進(jìn)制文件是一種基于值編碼的文件,它可以根據(jù)具體的應(yīng)用來(lái)指定值的含義(這種過(guò)程可視為用戶自定義編碼)。因?yàn)槲谋疚募投M(jìn)制文件的區(qū)別僅僅在于編碼,它們的優(yōu)缺點(diǎn)就是編碼的優(yōu)缺點(diǎn)。找一本編碼書(shū)更清楚。文本文件編碼是基于固定長(zhǎng)度的字符,因此解碼更容易;二進(jìn)制文件編碼是可變長(zhǎng)度的,因此靈活,存儲(chǔ)利用率更高,解碼困難(不同的二進(jìn)制文件格式,不同的解碼方法)。至于空間利用率,二進(jìn)制文件甚至可以使用一個(gè)位來(lái)表示意義(位操作),而文本文件的任何意義至少是一個(gè)字符。