如何使用 boost::crc?

新手上路,请多包涵

我想使用 boost::crc 以便它的工作方式与 PHP 的 crc32() 函数完全一样。我尝试阅读 可怕的文档,但后来很多头疼我没有取得任何进展。

显然我必须做类似的事情:

 int GetCrc32(const string& my_string) {
    return crc_32 = boost::crc<bits, TruncPoly, InitRem, FinalXor,
                   ReflectIn, ReflectRem>(my_string.c_str(), my_string.length());
}

bits 应该是 32.. 其他的东西是什么是个谜。一点帮助? ;)

原文由 Andreas Bonini 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.3k
2 个回答

Dan Story 和 ergosys 提供了很好的答案(显然我找错了地方,这就是为什么令人头疼的原因)但是当我这样做时,我想为我的问题中的功能提供一个复制和粘贴解决方案,供未来的谷歌用户使用:

 #include <boost/crc.hpp>

uint32_t GetCrc32(const string& my_string) {
    boost::crc_32_type result;
    result.process_bytes(my_string.data(), my_string.length());
    return result.checksum();
}

原文由 Andreas Bonini 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可能想使用 crc_32_type 而不是使用 crc 模板。该模板是通用的,旨在适应使用广泛变化的参数的各种 CRC 设计,但它们提供了四种内置的预配置 CRC 类型以供常用,包括 CRC16、CCITT、XMODEM 和 CRC32。

原文由 Dan Story 发布,翻译遵循 CC BY-SA 2.5 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题