Read 32-bit integer from binary file in C++?
You have two issues:
Insuring you read the bytes you intend (no fewer, no more) from the stream.
I'd recommend this syntax:
uint32_t a;
inFILE.read(reinterpret_cast<char *>(&a), sizeof(a));
Insure you're interpreting those bytes with the correct byte order.
Q: If you're on a PC, your CPU is probably little endian. Do you know if your data stream is also little-endian, or is it big endian?
If the data is big-endian, I'd consider the standard networking functions to accomodate byte order:
ntohl()
, etc: http://www.retran.com/beej/htonsman.html
ALSO:
Follow Hcorg's and Daniel Jour's advice: don't forget about the "open mode" parameter, and don't forget to check for "file open" errors.
Open file in binary mode and then use read()
method, something like:
uint32_t a;
ifstream file ("file", ios::in | ios::binary);
if (file.is_open())
{
file.read ((char*)&a, sizeof(a));
}