PHPのcrc32() 関数とまったく同じように機能するように、boost :: crcを使用したいと思います。私は 恐ろしいドキュメント を読んでみましたが、多くの頭痛の種は後で何も進歩していません。
どうやら私は次のようなことをしなければなりません:
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である必要があります。その他のことは謎です。少しの援助? ;)
Dan Storyと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設計に対応することを目的としていますが、CRC16、CCITT、XMODEM、CRC32をカバーする、一般的な使用法のための4つの組み込みの事前構成されたCRCタイプを出荷します。
ライブラリには、事前定義された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