Java实现crc16校验 附上校验工具对照。解决长数据校验不正确的问题
来源:互联网 发布:ubuntu luvit 编辑:程序博客网 时间:2024/05/24 06:32
Android与底层硬件通信,进行CRC16校验时,要考虑到无符号整形的原因,java会将超过的值变成负数
C算法:
Uint16 crc16 = 0;
Uint8 i = 0;
Uint16 Crc16Calc(Uint8 *data_arr, Uint8 data_len)
{
crc16 = 0;
for(i = 0; i < data_len; i++)
{
crc16 = (Uint16)(( crc16 >> 8) | (crc16 << 8));
crc16 ^= data_arr[i];
crc16 ^= (Uint16)(( crc16 & 0xFF) >> 4);
crc16 ^= (Uint16)(( crc16 << 8) << 4);
crc16 ^= (Uint16)((( crc16 & 0xFF) << 4) << 1);
}
Return crc16;
}
Java算法:
public static char Crc16Calc(byte[] data_arr, int data_len)
{
char crc16 = 0;
int i;
for(i =0; i < (data_len); i++)
{
crc16 = (char)(( crc16 >> 8) | (crc16 << 8));
crc16 ^= data_arr[i]& 0xFF;
crc16 ^= (char)(( crc16 & 0xFF) >> 4);
crc16 ^= (char)(( crc16 << 8) << 4);
crc16 ^= (char)((( crc16 & 0xFF) << 4) << 1);
}
return crc16;
}
校验器下载地址:http://dc3.pc6.com/xy2/amCRC16.zip
- Java实现crc16校验 附上校验工具对照。解决长数据校验不正确的问题
- CRC16校验算法的Java实现
- CRC16校验算法实现
- CRC16校验算法实现
- CRC16校验算法实现
- CRC16校验算法实现
- Java CRC16校验
- Java CRC16算法校验
- Java CRC16校验
- JAVA CRC16 校验
- CRC16校验的学习
- CRC16 校验
- CRC16校验
- CRC16校验
- CRC16校验
- CRC16校验
- CRC16校验
- crc16校验
- 张子阳:如何在30岁前年薪超过30万
- JS设置cookie,删除cookie
- Leetcode3 Longest Substring Without Repeating Characters
- 关于ShareSDK分享的功能
- Database Cloud Service试用二(数据导入)
- Java实现crc16校验 附上校验工具对照。解决长数据校验不正确的问题
- Matlab暂停语句
- Java笔记集合
- Java F-bounded
- Java核心技术第12章(3)
- Matlab回显语句
- rpm包安装gcc报错
- Step7中有关时间和定时器的使用和例程2
- linux的ulimit限制详解