如何使用boost :: crc?

Tho*_*ini 37 c++ 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());
}
Run Code Online (Sandbox Code Playgroud)

bits应该是32 ..其他事情是一个谜.一点帮助?;)

Tho*_*ini 58

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();
}
Run Code Online (Sandbox Code Playgroud)


Dan*_*ory 9

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


erg*_*sys 5

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