Я пытаюсь написать программу, которая читает 940 4-байтовых длинных значений двоичных данных [hex] из файла bin и выводит значения на консоль.У меня есть операции ifstream :: read, cout и seekg в цикле.
Он будет работать в течение первых 10 или около того итераций, а затем за одну итерацию пропустить операции чтения и записи, предварительно выполнить операцию поиска и продолжить чтение и запись.Кроме того, последние 200 строк или около того выдают одно и то же значение.
Он будет работать правильно в течение 12 итераций, затем начнет выводить неправильные числа.В этот момент он идет от адреса 0x230 до 0x28B, когда он должен быть в 0x260.Похоже, что read и cout не вызываются в этой конкретной итерации.
Последнее правильное значение - 3f4fc938.Следующее значение должно быть 3ef646c1.
Кто-нибудь знает, почему это не получится?Любая помощь приветствуется.
Это программа:
int main(int argc, char* argv[]) {
fstream in;
uint32_t buffer;
in.open(argv[1]);
in.seekg(0x6500,in.beg);
for(int i = 0; i < 940; i++) {
in.read(reinterpret_cast<char*> (&buffer),4);
cout << hex << buffer << endl;
in.seekg(0x2c,in.cur);
}
}