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