用C语言编写计算crc码
以下是一个简单的C语言代码示例,用于计算CRC码:
#include <stdio.h>
#include <stdint.h>
uint16_t crc16(const uint8_t *data, uint16_t length)
{
uint16_t crc = 0xFFFF;
for (uint16_t i = 0; i < length; i++)
{
crc ^= (uint16_t)data[i];
for (uint8_t j = 0; j < 8; j++)
{
if (crc & 1)
{
crc >>= 1;
crc ^= 0xA001;
}
else
{
crc >>= 1;
}
}
}
return crc;
}
int main()
{
uint8_t data[] = {0x01, 0x02, 0x03, 0x04};
uint16_t crc = crc16(data, sizeof(data));
printf("CRC16: %04X\n", crc);
return 0;
}
该代码实现了一个名为crc16的函数,该函数接受一个指向数据的指针和数据长度,并返回计算出的CRC码。该函数使用标准的CRC-16算法,使用0xA001作为多项式,并在每个字节中进行逐位处理。在每个字节的最低位之后,如果当前位为1,则将CRC右移一位并异或多项式。否则,只需将CRC右移一位即可。最后,返回计算出的CRC码。在主函数中,我们使用一个简单的数据数组来测试函数并在控制台上打印结果
原文地址: https://www.cveoy.top/t/topic/hhIF 著作权归作者所有。请勿转载和采集!