我想使用 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..其他的东西是什么是个谜。一点帮助?;)

有帮助吗?

解决方案

丹的故事和ergosys提供很好的答案(显然我一直在寻找在错误的地方,这就是为什么头痛),但同时我在这我想提供一个复制和粘贴功能解决我的问题对未来的Google:

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

其他提示

您可能需要使用crc_32_type而不是使用CRC模板。模板是一般性的,意在适应宽范围的CRC使用设计广泛变化的参数,但它们运送四个内置预配置CRC类型公共使用,涵盖CRC16,CCITT,XMODEM和CRC32。

该库包括预定义的CRC引擎。我想你想的一个是crc_32_type。看到这个例子: http://www.boost.org/doc /libs/1_37_0/libs/crc/crc_example.cpp

您是否尝试过使用预定义的 crc_32_type?

在此页面中,找到您需要的32位CRC校验码,读出所有其他参数: http://regregex.bbcmicro.net/crc-catalogue.htm

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top