43 votes

Comment utiliser boost :: crc?

Je veux utiliser boost :: crc pour qu'il fonctionne exactement comme la fonction crc32 () de PHP . J'ai essayé de lire l' horrible documentation et de nombreux maux de tête plus tard, je n'ai fait aucun progrès.

Apparemment, je dois faire quelque chose comme:

 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 devrait avoir 32 ans. Ce que sont les autres choses est un mystère. Un peu d'aide? ;)

77voto

Andreas Bonini Points 15709

Dan Story et ergosys ont fourni de bonnes réponses (apparemment je cherchais au mauvais endroit, c'est pourquoi les maux de tête) mais pendant que j'y suis, je voulais fournir une solution de copier-coller pour la fonction dans ma question pour les futurs googleurs:

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

10voto

Dan Story Points 4836

Vous voudrez probablement utiliser le crc_32_type au lieu d'utiliser le modèle crc. Le modèle est général et destiné à accueillir une large gamme de conceptions CRC en utilisant des paramètres très variables, mais ils livrent quatre types CRC préconfigurés intégrés pour une utilisation courante, couvrant CRC16, CCITT, XMODEM et CRC32.

5voto

ergosys Points 15343

La bibliothèque comprend des moteurs CRC prédéfinis. Je pense que celui que vous voulez est crc_32_type. Voir cet exemple: http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp

4voto

Marcelo Cantos Points 91211

Avez-vous essayé d'utiliser le crc_32_type prédéfini?

4voto

Ben Voigt Points 151460

Sur cette page, trouvez le CRC 32 bits particulier que vous souhaitez, lisez tous les autres paramètres: http://regregex.bbcmicro.net/crc-catalogue.htm

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X