|
Boost Users : |
Subject: Re: [Boost-users] crc updating how?
From: U.Mutlu (for-gmane_at_[hidden])
Date: 2015-07-09 18:50:41
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();
}
Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net