Вы можете попробовать привести ваш массив к указателю на long long, а затем проверить значение под ним.Проблема в том, что это всего лишь 6 * 8 = 48 бит, но вы можете просто использовать битовую маску для удаления лишних байтов.
ADDRESS1 == (*((long long*)MAC) & 0xFFFFFFFFFFFF)
Полная выборка: https://ideone.com/kFc8h0
#define ADDRESS1 0xD445556BD557
#define ADDRESS2 0xED612BDF113B
static const uint8_t ADDRESS[6] = { 0x57, 0xD5, 0x6B, 0x55, 0x45, 0xD4 };
int main()
{
if (ADDRESS1 == (*((long long*)ADDRESS) & 0xFFFFFFFFFFFF)) {
std::cout << "ADDRESS1\n";
}
if (ADDRESS2 == (*((long long*)ADDRESS) & 0xFFFFFFFFFFFF)) {
std::cout << "ADDRESS2\n";
}
}
Обратите внимание, чтоВ примере мне пришлось инвертировать байты в массиве ADDRESS, чтобы соответствовать маске в ADDRESS1.