Подтвердить что ты не робот

Как использовать 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.. Что это значит, это тайна. Небольшая помощь?;)

4b9b3361

Ответ 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.

Ответ 4

Вы пытались использовать предопределенный crc_32_type?

Ответ 5

На этой странице найдите конкретный 32-разрядный CRC, который вы хотите, зачитайте все остальные параметры: http://regregex.bbcmicro.net/crc-catalogue.htm