Расчет CRC - C (СИ)

Узнай цену своей работы

Формулировка задачи:

С Наступающим!!!) подскажите пожалуйста можно ли как-то расcчитать CRC для многобайтового сообщения используя алгоритм вычисления CRC для одного байта?

Решение задачи: «Расчет CRC»

textual
Листинг программы
unsigned char crc8(unsigned char *buffer, unsigned char len)
{
    unsigned char crc = 0xFF;
    unsigned char i;
 
    while (len--)
    {
        crc ^= *buffer++;
 
        for (i = 0; i < 8; i++)
            crc = crc & 0x80 ? (crc << 1) ^ 0x1D : crc << 1;
 
    } 
 
    crc ^= 0xFF;
    return crc;
}

Объяснение кода листинга программы

  1. Входные данные: — buffer (указатель на первый байт в буфере) — len (количество байтов в буфере)
  2. Переменные: — crc (регистр для хранения значения CRC) — i (счетчик для цикла по байтам)
  3. Инициализация начального значения CRC равным 0xFF.
  4. Цикл по всем байтам входного буфера: — XOR значение текущего байта с текущим значением CRC — Сдвиг значения CRC на 1 байт вправо — Проверка, является ли старший бит текущего значения CRC единицей — Если да, то выполнить обратный сдвиг на 1 байт и XOR с 0x1D
  5. После обработки всех байтов входного буфера: — XOR значение 0xFF с текущим значением CRC — Возврат полученного значения CRC

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

7   голосов , оценка 3.286 из 5