安卓能用的modebus CRC16计算,附上对应的C语言的CRC16
2015-03-21 21:35
309 查看
最近写安卓串口通信需要用到modebus 的crc16通信,网上找了很多都是字符串的,我需要byte的,由于java没有无符号数,转换有点小麻烦,对着C一步步测试,最终测试无误
代码如下:
//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); }
相关文章推荐
- 安卓能用的modebus CRC16计算,附上对应的C语言的CRC16(转)
- CRC16常见几个标准的算法及C语言实现
- 计算CRC程序(CRC16)
- C语言中的位操作(16)--计算二进制数字尾部连续0的数目
- CRC-16算法的C语言实现(图文)
- CRC_16 原理及其C语言算法实现
- CRC-16/MODBUS 校验位计算
- 计算CRC程序(CRC16)
- 学了C语言,如何写个程序计算出每个月的第一个星期一对应的日期
- 参照安卓计算CRC16校验码的方法获取Objective-C的CRC16位校验码
- CRC16常见几个标准的算法及C语言实现
- Java CRC16 校验代码 和 与之对应的C代码
- 计算CRC16
- CRC-16计算方法
- CCITT CRC-16计算原理与实现【整理综合】
- C# 计算CRC16
- CRC16常见几个标准的算法及C语言实现
- CCITT CRC-16计算原理与实现
- C语言 CRC 16 源码 算法
- CCITT CRC-16计算原理与实现