Я использую 16-битный CRC и имею генератор таблицы поиска (LUT), который производит LUT для данного многочлена. Генератор код я использует обозначения Купмана (например, 0x8810 для МККТТ) и, следовательно, производит первую строку таблицы, как:CRC - таблица поиска 16 бит с использованием различных полиномиальных обозначений
0x0000, 0x8810, 0x9830, 0x1020, 0xB870, 0x3060, 0x2040, 0xA850,
Я нашел уже вычисленный CCITT-таблицу с реализацией в Интернете однако, по-видимому использует другие нотация с первой линией определяется как:
0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7,
Мой вопрос: есть ли короткие и длинные нотации (0x8810 против 0x11021) дают одинаковые результаты с различными таблицами (т.е. использования в в LUT отличается) или CRC различны, используя один и тот же полином в разных обозначениях?
пс: Насколько я знаю, 0x8810 и 0x11021 являются Неотраженная Купман/«нормальная» нотация и 0x8408 и 0x10811 отраженных из них (для CCITT)
имп: «Код использования» для вторая таблица определяется как:
uint16_t crc16_block(uint16_t crc, uint8_t *data, int len){
int i;
for (i = 0; i < len; i++)
crc = (crc << 8)^crc16_tbl[(crc >> 8)^data[i]];
return crc;
}
Большое спасибо за подробный и понятный ответ! – cos4