1. 程式人生 > >二進位制和文字方式開啟檔案的區別

二進位制和文字方式開啟檔案的區別

二進位制檔案處理時會碰到的問題

我們使用處理二進位制檔案時,需要用如下方法

binfile=open(filepath,'rb')    讀二進位制檔案

binfile=open(filepath,'wb')    寫二進位制檔案

那麼和binfile=open(filepath,'r')的結果到底有何不同呢?

不同之處有兩個地方:

第一,使用'r'的時候如果碰到'0x1A',就會視為檔案結束,這就是EOF。使用'rb'則不存在這個問題。即,如果你用二進位制寫入再用文字讀出的話,如果其中存在'0X1A',就只會讀出檔案的一部分。使用'rb'的時候會一直讀到檔案末尾。

第二,對於字串x='abc\ndef',我們可用len(x)得到它的長度為7,\n我們稱之為換行符,實際上是'0X0A'。當我們用'w'即文字方式寫的時候,在windows平臺上會自動將'0X0A'變成兩個字元'0X0D','0X0A',即檔案長度實際上變成8.。當用'r'文字方式讀取時,又自動的轉換成原來的換行符。如果換成'wb'二進位制方式來寫的話,則會保持一個字元不變,讀取時也是原樣讀取。所以如果用文字方式寫入,用二進位制方式讀取的話,就要考慮這多出的一個位元組了。'0X0D'又稱回車符。linux下不會變。因為linux只使用'0X0A'來表示換行。

相關推薦

二進位制文字方式開啟檔案區別

二進位制檔案處理時會碰到的問題 我們使用處理二進位制檔案時,需要用如下方法 binfile=open(filepath,'rb')    讀二進位制檔案 binfile=open(filepath,'wb')    寫二進位制檔案 那麼和binfile=open(filep

c 開啟檔案方式二進位制文字

c語言檔案操作的一個問題:    c語言中開啟檔案有兩種方式,一種是二進位制方式,另一種是文字方式(ASCII碼方式)。這兩種方式有什麼區別?(對於Linux這種只有一種檔案型別的作業系統來說是沒有區別的)    我們就以windows為例說說區別:    a.以文

二進位制文字檔案區別

簡單來說,文字檔案是一種特殊的二進位制檔案,相當於文字檔案的編碼預設是ASCII或者Unicode。但是二進位制檔案卻有著更多的檔案編碼方式。這兩種檔案最終都是以01的方式儲存的。這兩種檔案只是在最終開啟的時候被解釋的不一樣而已。所以有時候Word檔案開啟之後是亂碼的形式,這

整理安卓系統自帶分享以..方式開啟的程式碼

分享檔案: intent = new Intent(Intent.ACTION_SEND); intent.setType("*/*"); intent.putExtra(Intent.EXTRA_STREAM, Uri.parse(path));

.net及.net core如何開啟資料夾?如何開啟.exe?如何開啟.txt文字?如何開啟*.*檔案

大道至簡! using System; using System.Diagnostics; namespace CommonUtils { /// <summary> /// 程序管理 /// </summary> public clas

.net及.net core如何開啟資料夾?如何開啟執行.exe?如何開啟.txt文字?如何開啟*.*檔案

大道至簡! using System; using System.Diagnostics; namespace CommonUtils { /// <summary> /// 程序管理 /// </summary> public clas

vi方式開啟檔案

開啟檔案的方式     vi  檔案    ;此方式中按esc可以隨意挪動游標而不能插入,在esc下dd是刪除一行,x是刪除一個字元。按下i之後可以進入插入資料模式,按下a是可以在下         一個游標處插入資料     Ctrl+u:向檔案首翻半屏;     C

c++ 以二進位制文字方式讀寫檔案區別

  在c++專案開發中,時常涉及到檔案讀寫操作。因此在這裡先簡單梳理和回顧一下文字模式和二進位制模式在進行檔案讀寫上的區別。   1.linux平臺下文字檔案和二進位制檔案的讀寫     在linux平臺下進行檔案讀寫時,文字模式和二進位制模式沒有區別。在檔案讀寫時,呼叫fopen,無論以文字模式還是二進位制

二進位制檔案文字檔案區別聯絡

將檔案看作是由一個一個位元組(byte) 組成的,那麼文字檔案中的每個位元組的最高位都是0,也就是說文字檔案使用了一個位元組中的七位來表示所有的資訊,而二進位制檔案則是將位元組中的所有位都用上了。這就是兩者的區別;  接著,第二個問題就是檔案按照文字方式或者二進位制方式

文字方式二進位制方式讀寫檔案的windows區別總結

一、寫     二進位制方式寫,當遇到整型和浮點數時是以小端模式的整個十六進位制值寫入到檔案中(和記憶體中一樣),當遇到ascii字元和utf-16(unicode)型別的字元時候是用該編碼的key值(unicode 16位元組時候不作為小端模式而是書寫模式儲存)寫入到檔

文字檔案二進位制檔案區別

1)文字檔案:這類檔案以文字的ASCII碼形式儲存在計算機中。它是以"行"為基本結構的一種資訊組織和儲存方式。  2)二進位制檔案:這類檔案以文字的二進位制形式儲存在計算機中,使用者一般不能直接讀懂它們,只有通過相應的軟體才能將其顯示出來。二進位制檔案一般是可執行程式、圖形、

怎麼以文字方式檢視二進位制的位元組碼檔案

1,在http://www.ej-technologies.com/download/jclasslib/files.html根據自己的作業系統下載jclasslib工具 2,解壓縮,找到bin下的jclasslib.exe,雙擊執行 3,然後file-->open

hprof檔案開啟轉換方式

與C++的記憶體不同,C++的記憶體洩露是由於分配了記憶體給某程式但是又沒有回收造成的。Java的記憶體洩露則是引用了一些垃圾物件,意思就是說程式引用了某些物件,但是又從來沒有使用過。Jave中的引用分為3種:強引用:引用為空的時候,Java的垃圾回收器會處理。一般來說自己

JSP檔案中的getpost方式區別

1:請求資料的大小不同。 因為get請求的資料是要追加到URL中,而URL的資料量一般不能超過2K,所以用get請求的方法對資料的大小有限制。而post請求方法是把資料放在訊息體中,所以理論上對資料量沒有限制。(但是實際操作中也不能能太大) 2:安全性不一樣

遇到一個開啟檔案方式“w+”“a+”的問題

正在進行的專案中有個日誌儲存模組,需要在裝置端將日誌資料寫到儲存介質——其實就是硬碟,就是一個檔案。在我測試時,發現上位機讀取到的日誌資料不全,明明登陸到裝置看有100多KB,但讀到的日誌才2行,肯定有問題,另外,裝置儲存的日誌檔案內容也有亂碼出現。因為這個模組在其它專案一

python2 python3 開啟檔案注意事項(兩者decodeencode函式的區別

比如,需要開啟的資料檔案puk_training.utf8的樣式如圖所示 一、python2 開啟檔案: import sys print(sys.getdefaultencoding()) #系統預設編碼方式 f = file(".\\pku_training

非接觸IC卡中typeA卡typeB卡的區別--總結,二者的調制方式編碼方式不同

優劣 進制數 發送 們的 -1 通過 title 支持 有關 非接觸IC卡中typeA卡和typeB卡的區別--總結,二者的調制方式和編碼方式不同 1.非接觸式IC卡的國際規範ISO/IEC14443的由來? 在非接觸式IC卡的發展過程中,這些問題逐漸被解決並形成通用的標

marginpadding的用法與區別--以及bug處理方式

使用 滿足 左右 ron 相互 一段 布局 方式 ont margin和padding的用法: (1)padding (margin) -left:10px;          左內 (外) 邊距(2)padding (margin) -right:10px;       

float 浮動 文檔流文字區別

關於 photo cli btn 元素 title comment div 顯示 源自:2-2 浮動的基礎知識 關於float屬性的脫離文檔流的問題 看完視頻後,教材裏說的使用float浮動後,元素雖然會脫離文檔流,但還處在文本流的位置當中,所以就不會出現重疊的效果嗎?

php.ini中開啟關閉 session auto_start 的區別

日常開發中,php.ini配置session.auto_start=0預設關閉會話時如果想開啟會話需要呼叫session_start:   session.auto_start 開啟就自動完成了session_start() 區別就在於在用SESSION前是否需要ses