40

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());
}

bits32 のはず.. 他のものは謎です。少しの援助?;)

4

5 に答える 5

72

ダンストーリーとergosysは良い答えを提供しました(どうやら私は間違った場所を探していたので、それが頭痛の種です)が、私がそれにいる間、私は将来のグーグルのために私の質問の関数のコピー&ペーストソリューションを提供したいと思いました:

uint32_t GetCrc32(const string& my_string) {
    boost::crc_32_type result;
    result.process_bytes(my_string.data(), my_string.length());
    return result.checksum();
}
于 2010-04-04T06:24:44.807 に答える
10

おそらくcrc_32_type、crcテンプレートを使用する代わりに使用することをお勧めします。テンプレートは一般的であり、さまざまなパラメータを使用してさまざまなCRC設計に対応することを目的としていますが、CRC16、CCITT、XMODEM、およびCRC32をカバーする、一般的な使用法のための4つの組み込みの事前構成済みCRCタイプが付属しています。

于 2010-04-04T06:20:34.487 に答える
5

ライブラリには、事前定義されたCRCエンジンが含まれています。欲しいのはcrc_32_typeだと思います。この例を参照してください:http ://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp

于 2010-04-04T06:20:36.123 に答える
4

事前定義されたものを使用してみましたcrc_32_typeか?

于 2010-04-04T06:21:22.457 に答える
4

このページで、必要な特定の32ビットCRCを見つけ、他のすべてのパラメーターを読み取ります:http: //regregex.bbcmicro.net/crc-catalogue.htm

于 2010-04-04T06:22:48.150 に答える