javaCRC8计算的坑

c语言的crc8

uint8_t calcCRC8(uint8_t *ptr, uint8_tlen)

{

uint8_t crc;

uint8_t i;

 

   crc = 0;

   while(len--) {

      crc ^= *ptr++;

      for(i = 0; i < 8; i++) {

         if(crc & 0x01)

            crc = (crc >> 1) ^ 0x8C;

         else

            crc >>= 1;

      }

   }

   returncrc;

}

 

java翻写crc8(错误的):

 

public static int FindCRC(byte[] data){

        int CRC=0;

        int genPoly =0x8C;

        for(inti=0;i<data.length; i++){

            CRC ^=data[i];

            for(intj=0;j<8;j++){

                if((CRC& 0x01) != 0){

                    CRC =(CRC >> 1) ^ genPoly;

                }else{

                    CRC>>= 1;

                }

            }

        }

        CRC &= 0xff;//保证CRC余码输出为1字节。

        return CRC;

    }

 

修正的计算CRC8

 

public static int FindCRC(byte[] data){

        int CRC=0;

        int genPoly =0x8C;

        for(inti=0;i<data.length; i++){

            CRC ^=data[i];

            CRC &=0xff;//保证CRC余码输出为1字节。

            for(intj=0;j<8;j++){

                if((CRC& 0x01) != 0){

                    CRC =(CRC >> 1) ^ genPoly;

                    CRC&= 0xff;//保证CRC余码输出为1字节。

                }else{

                    CRC>>= 1;

                }

            }

        }

        CRC &= 0xff;//保证CRC余码输出为1字节。

        return CRC;

    }

深圳逆时针

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值