CRC校验码 代码

u16 CRC_16_acc(unsigned char *buf,u16 len,u16 acc)
{
   u16 crc;
   unsigned char c,i,f1;

   crc = acc;
   f1  = 1;
   while(len != 0)
   {
      c =* buf;
      if(c != 0xff)
      {
         f1 = 0;
      }
      for(i = 0;i < 8;i++)
      {
         if((crc ^ c) & 1)
         {
            crc = (crc>>1)^0xa001;
         }
         else
         {
            crc >>= 1;
         }
         c >>= 1;
      }
      len--;
      buf++;
   }
   if(f1 == 1)
   {
      return 0;
   }
   return crc;
}


unsigned char Add_Crc_Calc(unsigned char* buf,unsigned char len)
{

     unsigned i=0,ret0 =0;

     for(i = 0;i < len;i++ )
     {
        ret0 += buf[i];
     }

     return ret0;
}

posted on 2011-10-19 16:52  码农也疯狂  阅读(491)  评论(0编辑  收藏  举报

导航