c++如何讀取二進制流文件

數字圖像處理的作業中要讀取一個二進制文件。所有的灰度值爲0-255. 使用下面的方法讀取時出現了問題。

ifstream fin;
	fin.open("data_batch_1.bin",ios::binary);
	if(!fin){
		cout<<"open error!"<<endl;
		return -1;
	}
	char buffer[3073];
	fin.read(buffer,3073*sizeof(char));
	for(int i=0;i<17;i++){
		cout<<(unsigned short)buffer[i]<<endl;
	}

由於char是有符號的,因此在使用unsigned short進行轉化的時候,也會出現問題。可以改爲下面的代碼。

ifstream fin;
	fin.open("data_batch_1.bin",ios::binary);
	if(!fin){
		cout<<"open error!"<<endl;
		return -1;
	}
	char buffer[3073];
	fin.read(buffer,3073*sizeof(char));
	for(int i=0;i<17;i++){
		unsigned char tmp=(unsigned char)buffer[i];
		cout<<(unsigned short)tmp<<endl;
	}


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章