C 使用二進位制讀寫整數型別

2021-07-13 21:10:35 字數 960 閱讀 4858

由於文字檔案中會存在各種問題,比如說無法區分資料型別。拿專案中的**當作例子來講,我現在需要儲存乙個二維整數型別的vector到硬碟上,因為每次生成這個vector需要花費大量的時間,那麼乙個很直觀的想法就是將vector直接儲存到硬碟上,然後直接從硬碟讀取這個資料。

但是,問題來了,如果我們使用文字的形式寫入硬碟時候,那麼vector中的一些資料將會變成一些其他符號,比如說回車符,換行符等等。並且我們寫入的時候如果資料之間沒有任何標記,那麼寫入的將會是一串連續的數字,比如說:

fstream file(filename,ios::in);

file>>1>>2;

那麼寫入將會是12,我們沒有辦法區別是1,2還是12。這樣檔案讀出來的時候將會出現問題。

如果我們在每乙個數字後面新增乙個空格是乙個不錯的想法,但是這樣會寫入大量無效的資料。讀取時候也會麻煩。這就是我們為什麼讀寫二進位制的原因,如果使用二進位制讀寫將不會存在這個問題。

ofstream out(filename,ios::binary);

int num = 20;

out.write((char*)&num, sizeof(int));

out.close();

ifstream out(filename,ios::binary);

int num;

out.read((char*)&num, sizeof(int));

cout這樣讀取就不會存在問題,保證我們讀取和寫入是一致的。這裡二進位制read和write函式都是需要使用char*進行型別轉換,如果在讀取的時候每次讀取char num[4],那就一定要小心了,這裡涉及到大端和小端的區別,不同的機器不同。

感謝兩位博友的啟發!

判斷二進位製半整數(二進位制)

10年後,tokitsukaze大佬已經變成了年收入超百萬的的精英程式設計師,家裡沒錢也沒礦的teitoku,找tokitsukaze大佬借1000塊錢,然後tokitsukaze大佬說,借你1024吧,湊個整數。沒錯在2進製下1024是 二進位制整數 乙個正整數滿足其值為2的k次方 k為正整數 我...

C 讀寫二進位制檔案

摘要 使用c 讀寫二進位制檔案,在開發中操作的比較頻繁,今天有幸找到一篇文章,遂進行了一些試驗,並進行了部分的總結。使用c 操作檔案,是研發過程中比較頻繁的,因此進行必要的總結和封裝還是十分有用的。今天在網上找到一篇,遂進行了部分的試驗,以記之,備後用。include 寫二進位制檔案 寫二進位制檔案...

c 讀寫二進位制檔案

最近需要用到二進位制檔案讀寫的相關操作,這邊稍微總結下,首先二進位制檔案的讀寫可以使用fread和fwrite來處理。fread函式原型 size t cdecl fread void size t,size t,file 第乙個引數表示的是快取,第二個引數表示的是基本單元的大小,第三引數表示的是基...