一、c语言

uint16_t crc_chk(uint8_t *data, uint8_t len)

{

uint8_t i;

uint16_t reg_crc = 0xffff;

while(len--) {

reg_crc ^= *data++;

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

if(reg_crc & 0x01) {

reg_crc = (reg_crc >> 1) ^ 0xA001;

} else {

reg_crc = reg_crc >> 1;

}

}

}

return reg_crc;

}

二、java语言

public class TestDemo {

/**

* crc 校验代码

*

* @param bufData

* byte类型的数组数据

* @param bufLen

* byte类型的数组数据的长度

* @return 计算后的校验码

*/

public static String crc_chk(byte[] bufData, int bufLen) {

int reg_crc = 0xffff;

for (int i = 0; i < bufLen; i++) {

reg_crc ^= ((int) bufData[i] & 0xff);

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

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

reg_crc = (reg_crc >> 1) ^ 0xa001;

} else {

reg_crc = reg_crc >> 1;

}

}

}

return Integer.toHexString(reg_crc);

}

public static byte[] HexString2Bytes(String src) {

byte[] ret = new byte[src.length() / 2];

byte[] tmp = src.getBytes();

for (int i = 0; i < tmp.length / 2; i++) {

ret[i] = uniteBytes(tmp[i * 2], tmp[i * 2 + 1]);

}

return ret;

}

public static byte uniteBytes(byte src0, byte src1) {

byte _b0 = Byte.decode("0x" + new String(new byte[] { src0 })).byteValue();

_b0 = (byte) (_b0 << 4);

byte _b1 = Byte.decode("0x" + new String(new byte[] { src1 })).byteValue();

byte ret = (byte) (_b0 ^ _b1);

return ret;

}

public static void main(String[] args) {

String ss = "AB0B0701140267010501";

byte[] dd = HexString2Bytes(ss);

System.out.println(crc_chk(dd, dd.length));

}

}

————————————————

版权声明:本文为CSDN博主「专注写bug」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.csdn.net/qq_38322527/article/details/89881758

crc算法java_c语言的crc16算法转java相关推荐

  1. c语言考试算法,c语言考试常用算法docx.docx

    c语言考试常用算法docx 求1~100的累加和#includevoid main(){inti=1,sum=0;while (i<=100){sum+=i;i++;}printf(" ...

  2. c代码实现 ifft运算_fft算法c语言_matlab fft算法_ifft c语言

    FFT快速算法C程序_工学_高等教育_教育专区.电子信息工程综合课程设计报告书 DSP 课程设计 报告 题学 目: 院: FFT 快速算法 C 程序 计算机与信息工程学院 09 ... fft算法代码 ...

  3. 函数c语言桶排算法,C语言基本排序算法之桶式排序实例

    本文实例讲述了C语言基本排序算法之桶式排序.分享给大家供大家参考,具体如下: 桶式排序是对一个有n个整型元素的数组a[n],其中对任意i,0 <= a[i] <= m的特殊排序算法. 可以 ...

  4. 时钟页面置换算法c语言,clock置换算法例题(改进clock置换算法例题讲解)

    Clock页面置换算法: 6)动态给出页面调用序列并进行调度: 7)输出置换结. C++编程要? 考试用 哪位大侠 帮帮 快点 谢谢了 这很简单啊,要打字太多了.不过网上这类算法举例很少,就看你怎么理 ...

  5. c语言编程实现dsa算法,C语言实现DSA算法(不包括质数生成)

    1.头文件部分 #include #include #include 2.判断大数是不是0或1 参见<C语言实现RSA算法> 3.大数加减乘除幂模 参见<C语言实现RSA算法> ...

  6. 弗洛伊德算法c语言path,Floyd算法(弗洛伊德算法)

    算法描述: Floyd算法又称为弗洛伊德算法,插点法,是一种用于寻找给定的加权图中顶点间最短路径的算法.从图的带权邻接矩阵A=[a(i,j)] n×n开始,递归地进行n次更新,即由矩阵D(0)=A,按 ...

  7. 用c语言编写银行家算法,C语言实现银行家算法

    <C语言实现银行家算法>由会员分享,可在线阅读,更多相关<C语言实现银行家算法(8页珍藏版)>请在人人文库网上搜索. 1.C语言实现银行家算法(源码.运行结果)一. 源码/* ...

  8. 最佳值换算法c语言,页面置换算法---最佳置换算法(OPT)

    最佳置换算法(OPT) 什么是OPT 最佳置换算法,其所选择的被淘汰的页面将是以后永不使用的,或是在最长(未来)时间内不再被访问的页面.采用最佳置换算法通常可保证最低的缺页率.但是人们目前还无法与之, ...

  9. shuffle算法c语言,C#Shuffle算法(洗牌算法、抽样算法)

    Fisher-Yates Shuffle算法 1.创建一个新的list 2.随机取出当前0-list.Count其中一个数 3.把老list当前随机数位置添加到新list 4.老list删除这个数 5 ...

最新文章

  1. Linux下rgmii接口,zynq7010 petalinux 2019.2 RGMII via EMIO 连接问题
  2. python测试开发自学教程-Web开发哪家强?看我用 Python 写一个颜值测试小工具
  3. stateflow新建状态中的枚举类型
  4. mysql插入日期 vs oracle插入日期
  5. AndroidX 方法数限制 Error:Cannot fit requested classes in a single dex file 64K问题
  6. 密码机项目安装软件时候出现的问题以及对应的解决办法
  7. Python数据清洗 - 洗什么?怎么洗?看完就明白了
  8. 计算机平面设计论文范,计算机平面设计论文关于计算机平面设计中汉字艺术论文范文参考资料...
  9. 第三十一章 线程------GIL、线/近程池、异/同步、异步回调
  10. timezone java_如何将Java日期转换为特定的TimeZone格式
  11. 数据结构:线性表理论题目集
  12. 如何使用TunesKit AceMovi Video Editor Mac在视频中添加贴纸
  13. python实验报告实验总结_python实验报告一
  14. 常见6种视频文件格式的优缺点归纳
  15. 计算机用word做贺卡,运用Word制作电子贺卡教学设计
  16. 探索TiDB Lightning源码来解决发现的bug
  17. 从服务器基础环境配置到搭建Docker+Gitlab+Gitlab Runner,完整介绍Spring Boot项目的持续集成与持续交付具体实现!
  18. pycharm安装lxml提示ERROR: b'xslt-config' \xb2\xbb\xca\xc7\
  19. 如何阻止某款软件访问网络
  20. Android修改设置文字转语音输出,默认语速

热门文章

  1. PKI系统相关知识点介绍
  2. hive如何处理not in和in的问题
  3. 中国移动技术愿景2020+
  4. win 下 apache2.4 +tomcat7 集群
  5. find_cmd函数分析
  6. jQuery 入门教程(5): 显示/隐藏内容
  7. Windows phone7 开发-Zune software is not launched 【转】
  8. api代理提取_了解提取API
  9. 微信sdk swift版_使用Swift 4的iOS版Google Maps SDK终极指南
  10. Google Chrome浏览器可能在您不知情的情况下破坏了您的测试