crc16

来源:互联网 发布:阿里云备案地址 编辑:程序博客网 时间:2024/05/24 15:38
#include <cstdio>using namespace std;// x^16+x^12+x^5+1unsigned short crc16(unsigned char *ptr, int len){    unsigned short CRC = 0xFFFF; // vc++ sizeof(unsigned short) == 2    unsigned char j, tmp = 0;    int i;    for (i = 0; i < len; i++)    {            CRC ^= ptr[i];                             for (j = 0; j < 8; j++)                           {                                               tmp = CRC & 0x01;                         CRC = CRC >> 1;                             if (tmp)CRC ^= 0xA001;            }                                       }    return ((CRC >> 8) + (CRC << 8)) & 0xffff;}int main(int argc, char* argv[]){unsigned char ptr[] = {0x01, 0x03, 0x0c, 0x43, 0x66, 0xcd, 0xc8, 0x40, 0x82, 0xdd, 0x6e, 0x44, 0x6b,0xf8, 0x45};int len = sizeof(ptr);printf("len=%d\n",len);printf("crc = %x", crc16(ptr,len));return 0;}


原创粉丝点击