c 语言 calcrc 函数,求crc的calcrc函数

unsigned   int   CMIS_computerDlg::calcrc(   unsigned   char   *ptr,   int   count   )             //求crc的calcrc函数,ptr是指向字符数组的指针

{ //count是求crc的数据个数,while循环的次数

int     i;

//unsigned   char   crc[2], *w;

//crc[2]='\0';

unsigned   int   crc;                             //要返回的crc       16位的

unsigned   char   crc1, crc2, crc3;         //指向数组中连续的三个字符     8位的

crc1   =   *ptr++   ;

crc2   =   *ptr++   ;

while   (--count   >=   0)   {

crc3   =   *ptr++   ;                                       //在while中补充下一个字符(8个bit)

for   (i   =   0;   i     {

if   (crc1   &   0x80)                             //判断crc1高位是否为1

{

crc1   =   crc1   <   if(crc2   &   0x80)                       //判断crc2高位是否为1

{

crc1=crc1   |   0x01;           //crc1低位由0变1

}

crc2   =   crc2   <   if(crc3   &   0x80)                       //判断crc3高位是否为1

{

crc2=crc2   |   0x01;           //crc2低位由0变1

}

crc3=crc3<<1;     //移出高位

crc1=crc1   ^   0x10;                   //前8bit与0x10异或

crc2=crc2   ^   0x21;                   //后8bit与0x21异或

}

else                                                     //如果crc1高位不是1,只移位致意不做异或

{

crc1   =   crc1   <   if(crc2   &   0x80)

{

crc1=crc1   |   0x01;

}

crc2   =   crc2   <   if(crc3   &   0x80)

{

crc2=crc2   |   0x01;

}

crc3=crc3<<1;

}

}//for

}//while

crc=(crc1<<8)+crc2;                 //*********************8

return   crc;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值