两个字节crc码 c语言,modbus-crc16——c语言
时间: 2023-11-09 14:04:23 浏览: 52
下面是使用 C 语言实现 Modbus CRC16 的代码:
```
#include <stdio.h>
#include <stdint.h>
uint16_t modbus_crc16(uint8_t *buf, int len) {
uint16_t crc = 0xFFFF;
int i, j;
for (i = 0; i < len; i++) {
crc ^= buf[i];
for (j = 0; j < 8; j++) {
if (crc & 0x0001) {
crc >>= 1;
crc ^= 0xA001;
} else {
crc >>= 1;
}
}
}
return crc;
}
int main() {
uint8_t buf[] = {0x01, 0x02, 0x00, 0x00, 0x00, 0x01};
int len = sizeof(buf) / sizeof(buf[0]);
uint16_t crc = modbus_crc16(buf, len);
printf("CRC: 0x%04X\n", crc);
return 0;
}
```
其中,`modbus_crc16` 函数接收一个字节数组 `buf` 和长度 `len`,计算出 CRC16 校验码并返回。主函数中,我们定义了一个字节数组 `buf`,并计算出它的 CRC16 校验码。