Вот это должно работать.
CODE
// IEEE CRC32 with a polynomial of 0xedb88320
static uint32_t crc32_tab[256];
static void crc32_tab_gen(void)
{
for (int i = 0; i < 256; i++)
{
uint32_t value = i;
for (int j = 0; j < 8; j++)
{
if (value & 1)
value = (value >> 1) ^ 0xedb88320ul;
else
value = value >> 1;
}
crc32_tab[i] = value;
}
}
static uint32_t crc32(uint8_t *data, int size)
{
uint32_t crc = 0xffffffff;
for (int i = 0; i < size; i++)
crc = crc32_tab[(crc ^ data[i]) & 0xff] ^ (crc >> 8);
return crc;
}
Таблицу crc32_tab можно сгенерировать заранее, естественно.
Сообщение отредактировал IgorKossak - Sep 27 2016, 18:28
Причина редактирования: [codebox] для длинного кода, [code] - для короткого!