使用c写一个crc16 ccitt的计算
时间: 2023-03-06 07:16:21 浏览: 161
CRC16_CCITT_OnebyOnebyOne_CRC16library_
以下是使用C语言编写CRC16-CCITT计算的示例代码:
```c
#include <stdio.h>
#include <stdint.h>
uint16_t crc16_ccitt(const uint8_t *data, size_t data_len)
{
uint16_t crc = 0xFFFF; // initial value of the CRC
for (size_t i = 0; i < data_len; ++i)
{
crc ^= data[i] << 8;
for (int j = 0; j < 8; ++j)
{
if (crc & 0x8000)
{
crc = (crc << 1) ^ 0x1021;
}
else
{
crc = crc << 1;
}
}
}
return crc;
}
int main()
{
uint8_t data[] = {0x01, 0x02, 0x03, 0x04, 0x05};
size_t data_len = sizeof(data) / sizeof(data[0]);
uint16_t crc = crc16_ccitt(data, data_len);
printf("CRC16-CCITT of data [");
for (size_t i = 0; i < data_len; ++i)
{
printf("%02X", data[i]);
}
printf("] is %04X\n", crc);
return 0;
}
```
该代码中的 `crc16_ccitt` 函数接受一个 `const uint8_t` 类型的指针和数据长度作为参数,计算并返回CRC16-CCITT值。在主函数中,我们定义了一个 `data` 数组,包含了待计算CRC的数据,并调用 `crc16_ccitt` 函数进行计算。最后,我们使用 printf 函数将计算结果输出到控制台。
阅读全文