所以我遇到了这个问题,我对文件的处理不是很熟练,我刚刚在大学里开始了C ++课,对于第一次作业,基本上我需要从二进制文件中提取特定的字节,然后进一步处理它们。
二进制文件看起来像这样:
01001001 01001001 00000101 00000000 00001010 00000000 00001100 00000000
00101101 00101110 00101111 00110000 00110001 00101000 00101001 00101010
...
前8B是某些管理属性的2B值。 (即0-2B是宽度,2-4B是高度,等等。) 我需要一一阅读这些2B属性,并将它们的值保存到uint16_t变量中。到目前为止,我得到的最进一步的信息是:
int main(void) {
fstream f1;
uint16_t endian, width, height, format;
f1.open("input_01.img", ios::in | ios::binary);
f1.get((char*) &endian, 2);
f1.get((char*) &width, 2);
f1.get((char*) &height, 2);
f1.get((char*) &format, 2);
/*...*/
}
此代码正确读取了前2B,但是由于某种原因它停止工作了……我不确定我是否不了解get()函数的工作方式或者我的方法是完全错误的……