Прежде всего, вы должны помнить, что каждое показанное вами шестнадцатеричное число (например, 18
) представляет собой однобайтный . То есть вам нужно прочитать и проверить четыре байта вместо восьми.
Во-вторых, вам не нужно сравнивать все байты по отдельности, вы можете читать четыре байта за раз и сравнивать с массив байтов, содержащий данные, которые вам нужно найти:
// The data we need to find in the file
uint8_t data_to_find[] = { 0x18, 0x53, 0x80, 0x67 };
// The data from the file
uint8_t current_data[sizeof data_to_find];
Затем прочитайте sizeof current_data
байтов в массив current_data
и сравните с data_to_find
:
if (std::memcmp(data_to_find, current_data, sizeof data_to_find) == 0)
{
// Found the data
}
else
{
// Didn't find the data
}