Как использовать boost:: crc?
Я хочу использовать boost:: crc, чтобы он работал точно так же, как PHP crc32(). Я пробовал читать ужасную документацию, и многие головные боли позже я не сделал никакого прогресса.
Видимо, мне нужно сделать что-то вроде:
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.. Что это значит, это тайна. Небольшая помощь?;)
Ответы
Ответ 1
Dan Story и ergosys предоставили хорошие ответы (по-видимому, я искал не то место, и почему я боюсь головных болей), но пока я нахожусь в этом, я хотел бы предоставить копию и вставить решение для функции в моем вопросе для будущих гуглеров
int GetCrc32(const string& my_string) {
boost::crc_32_type result;
result.process_bytes(my_string.data(), my_string.length());
return result.checksum();
}
Ответ 2
Возможно, вы захотите использовать crc_32_type
вместо использования шаблона crc. Шаблон является общим и предназначен для размещения широкого спектра проектов CRC с использованием самых разных параметров, но они поставляют четыре встроенных предварительно сконфигурированных CRC-типа для общего использования, охватывающих CRC16, CCITT, XMODEM и CRC32.
Ответ 3
Библиотека содержит предопределенные CRC-движки. Я думаю, что вы хотите crc_32_type. См. Этот пример: http://www.boost.org/doc/libs/1_37_0/libs/crc/crc_example.cpp
Ответ 4
Вы пытались использовать предопределенный crc_32_type
?
Ответ 5
На этой странице найдите конкретный 32-разрядный CRC, который вы хотите, зачитайте все остальные параметры:
http://regregex.bbcmicro.net/crc-catalogue.htm