c++实现Modbus CRC16校验
作者:野牛程序员:2023-12-28 11:13:38 C++阅读 2725
以下是C++代码示例,用于计算Modbus CRC16校验:
#include <iostream> #include <cstdint> uint16_t calculateModbusCRC16(const uint8_t *data, size_t length) { uint16_t crc = 0xFFFF; for (size_t i = 0; i < length; ++i) { crc ^= data[i]; for (int j = 0; j < 8; ++j) { if (crc & 0x0001) { crc = (crc >> 1) ^ 0xA001; } else { crc = crc >> 1; } } } return crc; } int main() { uint8_t message[] = {0x01, 0x02, 0x03, 0x04, 0x05}; size_t messageLength = sizeof(message) / sizeof(message[0]); uint16_t crcResult = calculateModbusCRC16(message, messageLength); std::cout << "Modbus CRC16校验结果: 0x" << std::hex << crcResult << std::endl; return 0; }
这段代码定义了一个名为calculateModbusCRC16
的函数,它接受数据和数据长度作为输入,并返回计算出的CRC16校验值。在main
函数中,创建了一个包含示例数据的数组,调用calculateModbusCRC16
函数计算CRC16校验值,并打印结果。
野牛程序员教少儿编程与信息学奥赛-微信|电话:15892516892
- 上一篇:c#实现Modbus CRC16校验
- 下一篇:C++STL常用容器string