If endian-ness isn't a issue (as Yves says if the two CRC's to be compared are obtained the same way), you could try with:
memcpy(&whole_four, data + MAX_INPUT - 4, sizeof(whole_four));
A modern compiler will inline this call to something well adapted to your situation considering data type alignment (a char array doesn't necessarily have the correct alignment) / processor.
PS memcpy
will interpret the bytes of data
with the host system byte order (little endian), while your method interprets the bytes from data
in big-endian order.
So memcpy will only work if you can obtain the other term of comparison in the same format.