因專案需要讀取二進位制檔案,一開始用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...