U.Mutlu wrote on 07/09/2015 04:38 PM:
Hi, I need to calc the crc chunkwise (ie. calc crc of a block, then continue with the next block etc.). Is this (not) possible with the boost crc?
In other words: how can the type "crc_32_type" be initialized with a user supplied uint32_t value?
boost::crc_32_type crc; crc = 0x1234; // <-- this brings compile error crc.process_bytes(buf, len);
error: no match for ‘operator=’ (operand types are ‘boost::crc_32_type {aka boost::crc_optimal<32ul, 79764919u, 4294967295u, 4294967295u, true, true>}’ and ‘const uint32_t {aka const unsigned int}’)
Problem now solved as follows: uint32_t crc32(const void* Ap, const size_t AuLen, uint32_t& /* IO */ AuInterimResult) { // 2015-07-09-Th // for "crc updating" pass AuInterimResult; must be 0 or 0xFFFFFFFF initially if (!AuInterimResult) AuInterimResult = 0xFFFFFFFF; boost::crc_optimal<32, 0x04C11DB7, 0xFFFFFFFF, 0xFFFFFFFF, true, true> crc(AuInterimResult); crc.process_bytes((const char*) Ap, AuLen); AuInterimResult = crc.get_interim_remainder(); return crc.checksum(); }