Tomsk Sysadmins Forum

Windows => Программирование => Topic started by: zatim on July 31, 2006, 18:42:22

Title: Как рассчитать CRC для массива байт?
Post by: zatim on July 31, 2006, 18:42:22
Подскажите пожалуйста! Как рассчитать CRC для массива байт?
Title: Как рассчитать CRC для массива байт?
Post by: demiurg on July 31, 2006, 22:25:09
Quote from: zatim
Подскажите пожалуйста! Как рассчитать CRC для массива байт?
См. прилагаемый файл.... это конечно на Pascal...
ftp://apollo.chtd.tpu.ru/pub/lang/delphi/UCrc32.pas (http://ftp://apollo.chtd.tpu.ru/pub/lang/delphi/UCrc32.pas)
Title: Как рассчитать CRC для массива байт?
Post by: zatim on August 01, 2006, 18:51:50
Прошу прощения, но я не уточнил - мне нужно вычислить 8-разрядный CRC. Причем желателен алгоритм, который будет под силу не очень шустрому микроконтроллеру. Однако спасибо за ссылку.
Title: Как рассчитать CRC для массива байт?
Post by: alexi on August 04, 2006, 11:36:53
Quote from: zatim
Прошу прощения, но я не уточнил - мне нужно вычислить 8-разрядный CRC. Причем желателен алгоритм, который будет под силу не очень шустрому микроконтроллеру. Однако спасибо за ссылку.

Массив то большой? Если больше чем пара байт то лучше использовать CRC16. Он позволяет определить больше ошибок.
Для микроконтроллера лучше использовать табличный алгоритм.
http://www.atmel.com/dyn/products/app_note...p?family_id=607 (http://www.atmel.com/dyn/products/app_notes.asp?family_id=607)
Здесь погляди. Написано достаточно подробно.

код на с можно посмотреть здесь
http://www.koders.com/?s=CRC16&_%3Abtn=Sea...la=Cpp&_%3Ali=* (http://www.koders.com/?s=CRC16&_%3Abtn=Search&_%3Ala=Cpp&_%3Ali=*)

табличный метод вычисления например здесь
http://www.koders.com/cpp/fid0A9479AF3176D...3B.aspx?s=CRC16 (http://www.koders.com/cpp/fid0A9479AF3176D44957BE3566AFF55F4AA5E8CD3B.aspx?s=CRC16)

Для табличного метода тебе нужно где-то разместить массив 512 байт. Но это самый быстрый метод.