用c ++中的.obj文件读取整数

时间:2016-03-25 20:42:09

标签: c++ file .obj

我有以下问题。我需要从文件xxx.obj读取整数。整数总是4B。

如果我使用hexdump -C文件,它看起来:

04 00 00 00 06 00 00 00  08 00 00 00 50 00 00 00

一对是1B。

这就是我如何打开文件:

ifstream fs1;
fs1.open( srcFile1, ios::in | ios::binary );

这就是我如何从循环文件中读取1B:

while( fs1.get( c ) )
  {
    cnt = (int)(unsigned char)c;
    cout << cnt << endl;

  }

Out is:

4
0
0
0
6
0
0
0
8
0
0
0
80
0
0
0

任何想法如何直接读取int或如何读取4x 1B然后转换为int?

2 个答案:

答案 0 :(得分:0)

你可以尝试

int val;
while(fs)
{
     fs.read(&val, sizeof(val);
     if(fs) cout<<val<<endl
}

读取流的函数允许一次读取任意数据块并将其复制到内存区域。

上面的代码一次读取大小为int的块,并将它们复制到int的内存区域 - val

答案 1 :(得分:0)

我建议使用int32_t数据类型,以确保获得4字节的int。如果您想要无符号数字,请使用uint32-t

int32_t x; // Make sure integer is 4 bytes
fs1.read(&x, sizeof(x)); // Read from file