177 / 162 / 30
Регистрация: 14.02.2013
Сообщений: 1,457
|
||||||
1 | ||||||
Алгоритм вычисления CRC-817.02.2014, 21:43. Показов 30386. Ответов 19
Метки нет (Все метки)
0
|
17.02.2014, 21:43 | |
Ответы с готовыми решениями:
19
Прощу объяснить алгоритм CRC 32 Составить блок-схему, алгоритм вычисления и программу для вычисления значения кусочно заданной функции Составить блок-схему, алгоритм вычисления и программу для вычисления значения кусочно заданной функции Быстрота вычисления CRC кода |
18767 / 9779 / 2393
Регистрация: 30.01.2014
Сообщений: 17,164
|
|||||||||||
17.02.2014, 23:38 | 2 | ||||||||||
Не очень это похоже на crc. Может быть не весь код приведен, но пока мимо.
Я бы предложил вот такое решение:
crc - начальное значение (например 0xFF) table - таблица crc8 рассчитанная по одному из полиномов (см. теорию) CRC8_TABLE_SIZE = 256 Таблицу можно найти в инете или сгенерировать самому. Пример функции генерации таблицы (MSB вариант):
0
|
177 / 162 / 30
Регистрация: 14.02.2013
Сообщений: 1,457
|
|
18.02.2014, 19:08 [ТС] | 3 |
DrOffset, мне бы таблицу применять не хотелось из за ограничении памяти хранения программы.
А вот такой подход может являться расчётом crc: "Для примера рассчитаем контрольную сумму нескольких 8-битных слов: 0x39, 0xf8, 0x14, 0xc2. Находим их сумму с поразрядным дополнением: 0x39 + 0xf8 = 0x131 → 0x31 ; 0x31 + 0x14 = 0x046 → 0x46 ; 0x46 + 0xc2 = 0x108 → 0x08 . Теперь находим поразрядное дополнение до единицы полученного результата: 0x08 = 0000 1000 → 1111 0111 = 0xf7 или, проще — 0xff − 0x08 = 0xf7. Это и есть искомая контрольная сумма."
0
|
18767 / 9779 / 2393
Регистрация: 30.01.2014
Сообщений: 17,164
|
|
18.02.2014, 19:42 | 4 |
CRC - это Cyclic redundancy check. Всего лишь один из вариантов расчета контрольной суммы. Контрольную сумму можно считать разными алгоритмами, не обязательно CRC. А твой алгоритм, я так понимаю, это контрольная сумма для UDP пакета? Если да, то можно использовать, конечно же. Но только это не CRC.
1
|
177 / 162 / 30
Регистрация: 14.02.2013
Сообщений: 1,457
|
|
18.02.2014, 20:55 [ТС] | 5 |
Понял.
Да точно мне надо контрольную сумму пяти 8-ми битных чисел. Спс за помощь.
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
20.09.2016, 08:38 | 6 | |||||
Здравствуйте заранее извиняюсь может за глупую просьбу
Не могли бы помочь с написанием програмки вычисления CRC8 табличным методом из введенного числа я слепил програмку но что то сам в ней запутался
0
|
20.09.2016, 09:14 | 7 |
AndreyHABL, а вы основы языка вообще знаете? Вы именно что "слепили" программу. Там где надо массив принять, вы принимаете байт, который по факту инт... Код самой функции вообще не соответствует тому, что в посте выше... Подтягивайте азы.
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
22.09.2016, 06:45 | 8 | |||||
Пробовал так :
Алгоритм следующий: есть какое либо сообщение например введенное с клавиатуры цифрами 16777133 (десятичное), далее надо каким то образом взять первые 8 бит с этих данных в нашем случае это 11111111 принять это за адрес в нашем массиве. Данные что по этому адресу (в нашем случае это AC(10101100)) надо ксорить (XOR) со вторыми 8ми битами нашего сообщения (в нашем случае это тоже FF). Полученный результат (в нашем случае это 01010011) это новый адрес в нашем массиве. Данные что по этому адресу (в нашем случае это 2d(00101101)) надо ксорить (XOR) уже с третьими 8ми битами нашего сообщения (в нашем случае это AD). Так должно продолжаться пока не кончится сообщение, в нашем случае оно кончается. Результат и будет контрольная сумма CRC8.
0
|
22.09.2016, 08:05 | 9 |
AndreyHABL, повторюсь еще раз: вам нужно взять книгу и изучать азы, а не контрольную сумму считать. Конечно будет выдавать ошибки, вы даже не в курсе, что переменные перед использованием нужно инициализировать. Вам повезло, что такой тяп-ляп слепленый код вообще скомпилировался. Не всем так прет. Короче, изучайте язык ибо на данном этапе обсуждать что-то предметно не имеет смысла.
0
|
7764 / 6537 / 2979
Регистрация: 14.04.2014
Сообщений: 28,550
|
|
22.09.2016, 09:35 | 10 |
AndreyHABL, ты сначала введи строку или задай константой, после уже вычисляй.
0
|
DrOffset
|
22.09.2016, 12:58
#11
|
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
25.09.2016, 08:05 | 12 | |||||
Вот всё поправил:
0
|
7764 / 6537 / 2979
Регистрация: 14.04.2014
Сообщений: 28,550
|
||||||
25.09.2016, 09:02 | 14 | |||||
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
25.09.2016, 10:11 | 15 | |||||
а так ?
0
|
7764 / 6537 / 2979
Регистрация: 14.04.2014
Сообщений: 28,550
|
|
25.09.2016, 10:20 | 16 |
Я же тебе показал как должно быть. Что даст int, там всего 4 байта? А массив можно любой длины сделать.
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
25.09.2016, 10:28 | 17 | |||||
Выдает ошибку если я это добавить
0
|
7764 / 6537 / 2979
Регистрация: 14.04.2014
Сообщений: 28,550
|
||||||
25.09.2016, 10:29 | 18 | |||||
Текст ошибки где?
Добавлено через 50 секунд Указатель там должен быть:
0
|
0 / 0 / 0
Регистрация: 20.09.2016
Сообщений: 6
|
||||||
25.09.2016, 10:39 | 19 | |||||
Можешь вставить в нужное место
0
|
7764 / 6537 / 2979
Регистрация: 14.04.2014
Сообщений: 28,550
|
||||||
25.09.2016, 10:41 | 20 | |||||
2
|
25.09.2016, 10:41 | |
Помогаю со студенческими работами здесь
20
Попробовать определить алгоритм CRC строки Алгоритм расчета CRC-XMODEM полином 8408 Составить алгоритм-вычисление квадрата суммы двух чисел и алгоритм для вычисления функции Выбрать алгоритм и составить его блок-схему для вычисления значения указанной функции.Составить программу вычисления Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |