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;
}

 

posted on 2024-06-22 13:11  lydstory  阅读(3)  评论(0编辑  收藏  举报

导航