c c讀取二進位制檔案

2021-09-07 19:42:21 字數 1053 閱讀 2204

因專案需要讀取二進位制檔案,一開始用c++讀取,c++下用的是ifstream類,完整**如下:

ifstream in(b3dmpath.c_str(), ios::in || ios::binary);//

in.seekg(0, ios::end );

size_t filesize = in.tellg();

in.seekg(ios::beg);

std::vectorgltfbuf(filesize);

in.read(gltfbuf.data(), filesize);

但讀取結果 gltfbuf顯示,前面一部分還正確,到vector後面的時候,字元全部變成了0,根本不正確,我又試了一下c語言來讀取,結果正確,目前還不知道什麼原因,如果有大神知道,希望能告訴我。c語言**如下:

file *fid;

if (fid == null)

fseek(fid, 0, seek_end);

long lsize = ftell(fid);

rewind(fid);

//開闢儲存空間

char *pos = (char*)malloc(lsize);

if (pos == null)

fread(pos, sizeof(char), lsize, fid);

fclose(fid);

for (int i = 0;i< lsize;i++)

//我想要的結果是最後9090 * 2個字元,所以對這部分字元操作驗證了一下

vectorvpos;

vpos.reserve(9090 * 2);

for (int i=0;i< 9090 * 2;i++)

vectorindex;

index.reserve(9090);

unsigned short tem = 0;

for (int m = 0; m < 9090; m++)

其結果顯示正確。不知道是編譯器的問題還是我**的問題,總之用c語言的**來讀取檔案的可靠性更高。

C C 讀寫二進位制檔案

file fopen const char filename,const char mode filename是要操作的檔名。mode 說明 wb 開啟乙個二進位制檔案,進行寫入操作。如果檔案不存在,則會建立乙個新檔案.存在則清空內容。ab 開啟乙個二進位制檔案,進行追加操作。如果檔案不存在,則會建...

Matlab讀取二進位制檔案

ps bin檔案是二進位制檔案,是檔案格式binary的縮寫。一 檔案的開啟與關閉 1 開啟檔案 在讀寫檔案之前,必須先用fopen函式開啟或建立檔案,並指定對該檔案進行的操作方式。fopen函式的呼叫格式為 fid fopen 檔名,開啟方式 說明 1 fid 用於儲存檔案控制代碼值,如果返回的控...

Python 二進位制檔案讀取

其實對於檔案單純的讀取還是非常好解決的。只要使用如下語句即可把檔案讀取出到變數temp中 如果對open函式的引數mode不熟悉,可以查閱 此處我們需要以二進位制方式讀取該檔案,因此mode rb with open filename,mode rb as file temp file.read f...