ReAl (09.08.2007 10:41, просмотров: 1) ответил Argon на Это не так страшно, если держать таблицу в ОЗУ, процедура пересчета - 3-4 строчки.
Кстати, а для CRC32 есть "убыстрённые" алгоритмы - как для CRC16, или они выходят слишком задумчивые и теряют смысл? В духе: <c>
uint16_t crc_ccitt_update (uint16_t crc, uint8_t data) {
data ^= lo8 (crc);
data ^= data << 4;
return ((((uint16_t)data << 8) | hi8 (crc)) ^ (uint8_t)(data >> 4)
^ ((uint16_t)data << 3));
}
</c>
И битового цикла нет - быстрее, и таблицы в 512 байт - компактно.