Ответ 1
У вас есть две проблемы:
-
Убедитесь, что вы читаете байты, которые вы намереваетесь (не меньше, не больше) из потока.
Я бы рекомендовал этот синтаксис:
uint32_t a;
inFILE.read(reinterpret_cast<char *>(&a), sizeof(a));
-
Убедитесь, что вы интерпретируете эти байты с правильным порядком байтов.
В: Если вы на ПК, ваш процессор, вероятно, немного endian. Знаете ли вы, что ваш поток данных также мало-северный, или он большой endian?
Если данные являются большими, я бы рассмотрел стандартные сетевые функции для размещения порядка байтов:
ntohl()
и т.д.: http://www.retran.com/beej/htonsman.html
и
Следуйте рекомендациям Hcorg и Daniel Jour: не забывайте о параметре "открытый режим" и не забывайте проверять ошибки "открытия файла".