C ++:如何从二进制文件中读取特定数量的字节并将其保存到uint16_t?

时间:2019-03-09 21:30:13

标签: c++ file input

所以我遇到了这个问题,我对文件的处理不是很熟练,我刚刚在大学里开始了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()函数的工作方式或者我的方法是完全错误的……

0 个答案:

没有答案