本文主要是介绍用 C实现 CRC-16/MODBUS x16+x15+x2+1校验计算,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
用 C实现 CRC-16/MODBUS x16+x15+x2+1校验计算
CRC(循环冗余校验)在线计算
实现代码
#include <stdio.h>
#include <stdint.h>uint16_t crc16_modbus(uint8_t *data, uint16_t length) {uint16_t crc = 0xFFFF;uint16_t i, j;for (i = 0; i < length; i++) {crc ^= data[i];for (j = 0; j < 8; j++) {if (crc & 0x0001) {crc >>= 1;crc ^= 0xA001;} else {crc >>= 1;}}}return crc;
}int main() {uint8_t data[] = {0x01, 0x06, 0x00, 0x1F, 0x08, 0x00};uint16_t crc = crc16_modbus(data, sizeof(data));printf("CRC-16/MODBUS: %04X\n", crc);return 0;
}
打印输出结果为:CCBF 与CRC在线计算器结果一致
这篇关于用 C实现 CRC-16/MODBUS x16+x15+x2+1校验计算的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!