2016-03-25 3 views
0

У меня есть следующая проблема. Мне нужно прочитать целые числа из файла xxx.obj. Целые числа всегда 4B.Чтение целых чисел из .obj-файла в C++

Если я использую HexDump -C в файл, он выглядит:

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

Одна пара 1В.

Это, как я открыть файл:

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

Это, как я прочитал 1В из файла в цикле:

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

    } 

Out является:

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

Любая идея как читать непосредственно int или как читать 4x 1B, а затем конвертировать в int?

ответ

0

Я бы предложил использовать тип данных int32_t, чтобы вы могли быть уверены в получении 4-байтового int. Или используйте uint32-t, если вы хотите беззнаковые числа.

+0

I musst add (char *) before & x, thx – Levin

+0

@Levin Это имеет смысл. ;) – Logicrat

0

Вы можете попробовать

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

Функция чтения потока позволяет читать произвольный кусок данных сразу и скопировать его в зону памяти.

Код выше считывает фрагменты размером int сразу и копирует их в зону памяти int - val.

+0

Хотя этот код может ответить на вопрос, предоставляя дополнительный контекст относительно * почему * и/или * как * этот код отвечает на вопрос, улучшает его долгосрочную ценность. –