Author Topic: Как рассчитать CRC для массива байт?  (Read 4437 times)

0 Members and 1 Guest are viewing this topic.

Offline zatim

  • Newbie
  • *
  • Posts: 11
  • Karma: +0/-0
Подскажите пожалуйста! Как рассчитать CRC для массива байт?

Offline demiurg

  • Hero Member
  • *****
  • Posts: 1014
  • Karma: +0/-0
    • http://larin.tomsk.ru
Как рассчитать CRC для массива байт?
« Reply #1 on: July 31, 2006, 22:25:09 »
Quote from: zatim
Подскажите пожалуйста! Как рассчитать CRC для массива байт?
См. прилагаемый файл.... это конечно на Pascal...
ftp://apollo.chtd.tpu.ru/pub/lang/delphi/UCrc32.pas
« Last Edit: July 31, 2006, 22:27:11 by demiurg »

Offline zatim

  • Newbie
  • *
  • Posts: 11
  • Karma: +0/-0
Как рассчитать CRC для массива байт?
« Reply #2 on: August 01, 2006, 18:51:50 »
Прошу прощения, но я не уточнил - мне нужно вычислить 8-разрядный CRC. Причем желателен алгоритм, который будет под силу не очень шустрому микроконтроллеру. Однако спасибо за ссылку.

Offline alexi

  • Newbie
  • *
  • Posts: 26
  • Karma: +0/-0
Как рассчитать CRC для массива байт?
« Reply #3 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.koders.com/?s=CRC16&_%3Abtn=Sea...la=Cpp&_%3Ali=*

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

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