25개 이상의 토픽을 선택하실 수 없습니다.
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
- #include "crc.h"
-
- quint16 calculateCrc(const QByteArray &data)
- {
- quint16 crc = 0xFFFF; // MODBUS初始值
- const quint16 polynomial = 0xA001; // MODBUS多项式(0x8005的反转)
-
- for (int i = 0; i < data.size(); ++i)
- {
- crc ^= static_cast<quint8>(data.at(i));
-
- for (int bit = 0; bit < 8; ++bit)
- {
- if (crc & 0x0001)
- { // 检查最低位
- crc = (crc >> 1) ^ polynomial; // 右移并异或
- } else
- {
- crc >>= 1; // 仅右移
- }
- }
- }
- return crc;
- }
|