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