crc-16的c语言代码
时间: 2023-08-09 08:06:08 浏览: 78
以下是一个使用CRC-16算法的C语言代码示例:
```c
#include <stdio.h>
#define POLY 0x8005
unsigned short crc16(unsigned char *data, int length)
{
unsigned short crc = 0x0000;
int i, j;
for (i = 0; i < length; ++i)
{
crc ^= (unsigned short)(data[i] << 8);
for (j = 0; j < 8; ++j)
{
if (crc & 0x8000)
{
crc = (crc << 1) ^ POLY;
}
else
{
crc <<= 1;
}
}
}
return crc;
}
int main()
{
unsigned char data[] = "123456789";
unsigned short crc = crc16(data, sizeof(data) - 1);
printf("CRC-16: 0x%04X\n", crc);
return 0;
}
```
在这个示例中,我们使用了一个名为crc16的函数来计算CRC-16校验码。该函数接受两个参数:一个指向数据的指针和数据的长度。它返回一个16位的校验码。
在函数内部,我们使用了一个名为crc的变量来存储校验码。我们使用了一个for循环来遍历数据中的每个字节,并在每个字节上执行一系列的位操作来计算校验码。最后,我们返回计算得到的校验码。
在main函数中,我们定义了一个unsigned char数组来存储数据,并将其传递给crc16函数来计算CRC-16校验码。我们使用printf函数来打印计算得到的校验码。