MicroCHIP.RU
Главная Документация Отладочные средства Справочник Поиск Ссылки
 Новости   Конференция   Контакты 
 

Помогите найти алгоритм контрольной суммы!!!

 Нoвaя темa  |  Наверх  |  Перейти к теме  |  Поиск  |  Правила  |  Вход 

ВНИМАНИЕ!
Вы просматриваете архив форума.

Этот форум работает только в режиме просмотра и поиска.

Действующий форум переведен на новый движок и
находится по адресу www.microchip.su

 Помогите найти алгоритм контрольной суммы!!!
Автор: Vitaliy7 ()
Дата:   11/09/2004 17:14

Помогите найти алгоритм контрольной суммы!!!

Существует строка из 4 байт, целостность строки проверяется контрольной суммой в
последнем байте. Алгоритм подсчета контрольной суммы неизвестен. Пробывал
использовать стандартный алгоритм CRC-8 (использовал различные полиномы) - ничего.

Вот примеры строк:
00 00 00 00
00 00 02 D5
00 00 32 79
00 00 33 CA
00 12 4A 9D
00 12 CA DB
00 12 CE C2
00 80 06 23
00 80 16 47
01 02 5A 66
01 02 DA 20
01 02 DE 39
01 0A 5A 1F
01 0A 5E 06


 
 Re: Помогите найти алгоритм контрольной суммы!!!
Автор: IgorV ()
Дата:   11/09/2004 18:53

для начала это не CRC.

Для продолжения: можешь ли прогнать бегущую 1-цу (остальные нули) и получить от неё
24 варианта контрольной суммы? Если сможешь - многое сразу станет ясно.


 
 объясните чайнику...
Автор: xepp ()
Дата:   12/09/2004 17:17

...подробно алгоритм CRC-8. И откуда там берется полином. То, что сам нашел - CRC это есть
cyclic redundance code и что в реализациях CRC используются всего две операции - циклический
сдвиг и битовое XOR. Могу представить, что комбинация этих операций в конце концов приводит к
полиному. Даже видел эти полиномы, например x^8+x^5+x^4+1. Но что здесь х и как этот полином
пользовать - не пойму..


 
 Re: объясните чайнику...
Автор: IgorV ()
Дата:   12/09/2004 19:56

xepp писал(а):

> ...подробно алгоритм CRC-8. И откуда там берется полином. То,
> что сам нашел - CRC это есть
> cyclic redundance code и что в реализациях CRC используются
> всего две операции - циклический
> сдвиг и битовое XOR. Могу представить, что комбинация этих
> операций в конце концов приводит к
> полиному. Даже видел эти полиномы, например x^8+x^5+x^4+1. Но
> что здесь х и как этот полином
> пользовать - не пойму..

Если конечно ты не прикалываешься...

Умничать не буду, скажу чё помню. В том примере что написал Vitaliy7 в первой
строке контрольный байт равен 00 - чего точно не может быть при CRC. Именно так
полином и выбирается вместе с исходным данным, чтобы нуля никогда небыло.
Его пример больше похож на нециклические коды, например Хеминга.

А полином этот - наплюй, как представлял себе так и представляй, это просто другой
способ записи (особенно так проще преподавать, через полином) с практической же
точки зрения практики - твой пример это просто указаны разряды, которые нужно в XOR
использовать. Типа как 2^8 и т.д.
А с помощью полинома проще записать математику деления при вычислении CRC.
(x^13 +x^9+x^3+1)/(x^8+x^5+x^4+1) остаток от деления полиномов и будет CRC - вроде
так. Причём при вычитании тут используется XOR.

Дас... давно это было, 10 лет прошло - терминология ниже плинтуса...
Любой студент это лучше раскажет, елс и конечно он не ради корочек, а ради знаний.


 
 Re: Спасибо за ответы, я разобрался.
Автор: Vitaliy7 ()
Дата:   12/09/2004 21:49

Полином для расчета 0xB3. Расчет CRC начиная с первого байта,
сдвиг данных ВЛЕВО.


 
 ну и вообще, в той ветке ещё что-то можно почитать
Автор: patton ()
Дата:   13/09/2004 13:12

http://www.microchip.ru/phorum/read.php?f=2&i=62004&t=61986


 
 Re: Спасибо за ответы, я разобрался.
Автор: IgorV ()
Дата:   13/09/2004 15:26

Vitaliy7 писал(а):

> Полином для расчета 0xB3. Расчет CRC начиная с первого байта,
> сдвиг данных ВЛЕВО.

Всё ясненько. Значит исходное число взято 00, тогда сколько нулей не добавляй -нули
и будут. Весь смак от CRC потерян нафиг. Ну да ладно.