C ++ Boost 组合 CRC 校验和
c++ boost combine crc checksum
我有一个方向图,对于我计算的每个项目,crc 表示它自己的数据 + 它也指向的项目的数据。
为了避免多次重新计算一个项目的数据,我想为项目使用已经计算的 crc。或者在伪代码中:
crc = process_data(data);
for (auto item : items)
crc = combine_magic(crc, item.crc());
问题是combine_magic应该是什么。我使用加速 crc 库,但我在那里没有找到这样的功能。简单地使用 xor 是一个坏主意,因为我可能会完成一些指向偶数次的项目 - 这将将它们从等式中消除。Zlib 似乎 https://github.com/madler/zlib/blob/master/crc32.c 提供了这样的功能,但我想避免再添加一个依赖项。
如果你不想使用 zlib,那么只需从 zlib 复制代码:crc32_combine_()
、gf2_matrix_square()
和 gf2_matrix_times()
。它大约有 60 行代码。
您的combine_magic()
函数还需要用于计算 CRC 的项目中的字节数,以便将其与 crc
组合在一起。因此,请与CRC一起保存该长度。
顺便说一下,无论如何,boost都需要zlib。
相关文章:
- 如何用尽可能少的数据将数据缓冲区计算为零校验和值
- 计算校验和的逐位运算符
- 如何从存储在 QByteArray 中的十六进制值计算校验和
- 如何在 c++ 中计算对象的哈希/校验和/指纹?
- C++文件传输的校验和算法
- 如何从 IP 校验和字段中计算十六进制值
- 计算句子的校验和(XOR)(由不同变量/类型的组合形成)
- 目录校验和
- 编译后如何计算某些二进制功能(或基本块)的校验和
- PMS5003带有ESP8266-许多校验和错误
- 未正确的校验和释放对象 - 打印时错误
- 将C++校验和函数转换为 Java
- 确定是否使用boost.asio计算UDP校验和
- 校验和CRC 16从C 到Java
- 不同的CRC32校验和同一文件
- Qt,tcp/ip通信校验和
- 正在计算ICMP数据包校验和
- 错误的校验和错误遍布程序
- 如何计算 dmg 文件上的主校验和和数据分叉校验和
- C ++ Boost 组合 CRC 校验和