如何使用zlib计算CRC32-C校验和

安东

我正在使用C zlib API,因为它具有将crc32_combine校验和连接在一起功能,而Boost 1没有。

但是,我需要使用多项式实现CRC32-C(Castagnoli)校验和0x1EDC6F41,而不是标准CRC32校验和。

有了Boost,我显然可以使用:

#include <boost/crc.hpp>

using crc_32c_type = boost::crc_optimal<32, 0x1EDC6F41, 0xFFFFFFFF, 0xFFFFFFFF, true, true>;
crc_32c_type result;
result.process_bytes(reinterpret_cast<const char*>(&buffer), len);
return result.checksum();

可以使用0x1EDC6F41多项式。

我可以通过zlib使用类似的方法吗?

马克·阿德勒

zlib是开源的。您可以简单地获取源代码并根据自己的需要进行修改。您可以将行:更改odd[0] = 0xedb88320UL;为Castagnoli多项式的反射。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章