crc校验
#include <stdio.h> #include <stdint.h> uint16_t crc16(uint8_t *data, int length) { uint16_t crc = 0xFFFF; for (int i = 0; i < length; i++) { crc ^= data[i]; for (int j = 0; j < 8; j++) { if (crc & 1) { crc >>= 1; crc ^= 0xA001; } else { crc >>= 1; } } } return crc; } uint16_t calculateCRC(uint8_t *data, int length) { return crc16(data, length); } int main() { uint8_t message[] = { 0x47,0xC7 }; int length = sizeof(message) / sizeof(message[0]); uint16_t crc = calculateCRC(message, length); printf("CRC: 0x%04X\n", crc); return 0; }