On Mar 14, 2024, at 3:46 PM, wrotycz <[email protected]> wrote:
>
>
> Despite that the question is how do I use zlib crc32()? It doesn't give me
> correct result.
>
> My 'rig' is this:
>
> ~~~
> crc = -1
> while (buffer, length = read_data()):
> {
> crc = crcfunc(crc, buffer, length)
> }
> crc = ~crc
> ~~~
>
> This doesn't work with `crc32_z();’
You would need to read the documentation in zlib.h in order to be able to use
its crc32() or crc32_z() correctly. From zlib.h:
Usage example:
uLong crc = crc32(0L, Z_NULL, 0);
while (read_buffer(buffer, length) != EOF) {
crc = crc32(crc, buffer, length);
}
if (crc != original_crc) error();
The initial value returned by crc32(0L, Z_NULL, 0) is 0, not -1. And there is
no post inversion. To get your test code to work, it would need to be:
> crc = 0
> while (buffer, length = read_data()):
> {
> crc = crc32_z(crc, buffer, length)
> }