Then you're going to have to go around the block the long way. If you know how long the array is, then make an unsigned int pointer and point it to &array [size-4], pull the value, and compare it.

The potential problem is one of portability and endianness. If you know you'll always be working with the same system (same endianness), then you only need to know how the 4 bytes were stored, in the first place, and follow that procedure when you pull them out. If that isn't amenable to the pull as an unsigned, then you'll have to pull and pack them the same way they were stored.

It sounds more like a crc than a checksum. Whatever, it was no doubt calculated on the fly and either it or its complement was stored. You need to know that, too.