c++ - ¿Cómo usar boost:: crc?
(5)
Quiero usar boost :: crc para que funcione exactamente como la función crc32 () de PHP . Intenté leer la horrible documentación y muchos dolores de cabeza después, no he progresado.
Aparentemente tengo que hacer algo como:
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
deben ser 32 ... Lo que son las otras cosas es un misterio. ¿Un poco de ayuda? ;)
¿Has intentado usar el crc_32_type
predefinido?
Dan Story y ergosys dieron buenas respuestas (al parecer estaba buscando en el lugar equivocado, es por eso que los dolores de cabeza), pero mientras tanto, quería proporcionar una solución de copiar y pegar para la función en mi pregunta para futuros usuarios de Google:
int GetCrc32(const string& my_string) {
boost::crc_32_type result;
result.process_bytes(my_string.data(), my_string.length());
return result.checksum();
}
En esta página, encuentre el CRC de 32 bits particular que desee, lea todos los demás parámetros: http://regregex.bbcmicro.net/crc-catalogue.htm
La biblioteca incluye motores CRC predefinidos. Creo que el que quieres es crc_32_type. Vea este ejemplo: http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp
Probablemente desee utilizar crc_32_type
lugar de usar la plantilla crc. La plantilla es general y está pensada para acomodar una amplia gama de diseños de CRC que utilizan parámetros muy variables, pero envían cuatro tipos de CRC preconfigurados incorporados para uso común, que cubren CRC16, CCITT, XMODEM y CRC32.