• 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16(转)


    源:安卓能用的modebus CRC16计算,附上对应的C语言的CRC16

    “源”即是原文地址,想了解作都更多文章及思想请移步到“源”。转过只是为了本人感兴趣的文章查找方便。

    正文:

      最近写安卓串口通信需要用到modebus 的crc16通信,网上找了很多都是字符串的,我需要byte的,由于java没有无符号数,转换有点小麻烦,对着C一部一部测试

    代码如下:

    //java

    int CRC16_Check(byte Pushdata[],int length)  
    {  
        int Reg_CRC=0xffff; 
        int temp;
        int i,j;    
      
        for( i = 0; i<length; i ++)  
        {  
            temp = Pushdata[i];
            if(temp < 0) temp += 256; 
            temp &= 0xff;
            Reg_CRC^= temp;  
             
           for (j = 0; j<8; j++)  
           {  
               if ((Reg_CRC & 0x0001) == 0x0001)  
                   Reg_CRC=(Reg_CRC>>1)^0xA001; 
               else  
                   Reg_CRC >>=1; 
           }    
        }  
        return (Reg_CRC&0xffff);  
    } 

    //C

    u16 CRC16_Check(u8 *Pushdata,u16 length)  
    {  
        u16 Reg_CRC=0xffff;  
        u8 Temp_reg=0x00;  
        u16 i,j; 
           
        for( i = 0; i<length; i ++)  
        {  
            Reg_CRC^= *Pushdata++;  
    
            for (j = 0; j<8; j++)  
            {  
                   if (Reg_CRC & 0x0001)  
                       Reg_CRC=Reg_CRC>>1^0xA001;  
                else  
                    Reg_CRC >>=1;  
    
               }    
        }  
        return (Reg_CRC);  
    } 
  • 相关阅读:
    Pascal's Triangle
    Pascal's Triangle II
    贪心算法入门
    Jump Game
    Symmetric Tree
    Reverse Words in a String
    [BZOJ2342][Shoi2011]双倍回文
    [HDU3068]最长回文
    [POJ1984]Navigation Nightmare
    [BZOJ3295][Cqoi2011]动态逆序对
  • 原文地址:https://www.cnblogs.com/LittleTiger/p/4682012.html
Copyright © 2020-2023  润新知