如何使用boost :: crc?

时间:2010-04-04 06:06:13

标签: c++ boost crc

我想使用boost :: crc,使其与PHP's crc32()函数完全相同。我尝试阅读horrible documentation以及后来的许多令人头疼的事情我没有取​​得任何进展。

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

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 ..其他事情是一个谜。一点帮助? ;)

5 个答案:

答案 0 :(得分:55)

Dan Story和ergosys提供了很好的答案(显然我看错了地方,这就是令人头疼的原因)但是当我在这里时,我想在未来的googlers中为我的问题提供一个复制和粘贴解决方案:

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

答案 1 :(得分:9)

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

答案 2 :(得分:5)

该库包含预定义的CRC引擎。我想你想要的是crc_32_type。请参阅此示例:http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp

答案 3 :(得分:4)

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

答案 4 :(得分:4)

在此页面上,找到您想要的特定32位CRC,读取所有其他参数: http://regregex.bbcmicro.net/crc-catalogue.htm