CRC

发布时间:2017-7-1 11:34:13编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"CRC",主要涉及到CRC方面的内容,对于CRC感兴趣的同学可以参考一下。

typedef unsigned char    uint8_t;typedef unsigned short   uint16_t;typedef unsigned int     uint32_t;#define        CRC_POLY_16            0xA001#define        CRC_START_MODBUS       0xFFFFstatic uint16_t crc_tab16[256];static bool     crc_tab16_init = false;static void init_crc16_tab(void){    uint16_t i;    uint16_t j;    uint16_t crc;    uint16_t c;    for (i = 0; i<256; i++)     {        crc = 0;        c = i;        for (j = 0; j<8; j++)         {            if ((crc ^ c) & 0x0001)            {                crc = (crc >> 1) ^ CRC_POLY_16;            }            else            {                crc = crc >> 1;            }            c = c >> 1;        }        crc_tab16[i] = crc;    }    crc_tab16_init = true;}uint16_t crc_modbus(const unsigned char *input_str, size_t num_bytes) {    uint16_t crc;    uint16_t tmp;    uint16_t short_c;    const unsigned char *ptr;    size_t a;    if (!crc_tab16_init) init_crc16_tab();    crc = CRC_START_MODBUS;    ptr = input_str;    if (ptr != NULL) for (a = 0; a < num_bytes; a++)     {        short_c = 0x00ff & (uint16_t)*ptr;        tmp = crc       ^ short_c;        crc = (crc >> 8) ^ crc_tab16[tmp & 0xff];        ptr++;    }    return crc;}

参考资料:  On-line CRC calculation and free library


上一篇:SVN中Commit出现乱码的解决方案【转载】
下一篇:Windows程序设计_21_Win32文件操作

相关文章

关键词: CRC

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款