CRC16算法系列文章:

功能

实现CRC16-CCITT-MODBUS算法

支持int、short类型

支持选择数组区域计算

实现

  1. /**
  2. * crc16_ccitt_modbus算法(四字节)友情提示:做好自己!--eguid博客地址:http://blog.csdn.net/eguid_1
  3. * @param buf
  4. * @param offset
  5. * @param length
  6. * @return
  7. */
  8. public static int crc16_ccitt_modbus(byte[] buf,int offset, int length) {
  9. int i, j;
  10. int c, crc = 0xFFFF;
  11. for (i = offset; i < length; i++) {
  12. c = buf[i] & 0x00FF;
  13. crc ^= c;
  14. for (j = 0; j < 8; j++) {
  15. if ((crc & 0x0001) != 0) {
  16. crc >>= 1;
  17. crc ^= 0xA001;
  18. } else
  19. crc >>= 1;
  20. }
  21. }
  22. return crc;
  23. }
  24. /**
  25. * crc16_ccitt_modbus算法(四字节)
  26. * @param buf
  27. * @return
  28. */
  29. public static int crc16_ccitt_modbus(byte[] buf) {
  30. return crc16_ccitt_modbus(buf,0,buf.length);
  31. }
  32. /**
  33. * crc16_ccitt_modbus算法(两字节)
  34. * @param buf
  35. * @param offset
  36. * @param length
  37. * @return
  38. */
  39. public static int crc16_ccitt_modbus_short(byte[] buf,int offset, int length) {
  40. return (short)crc16_ccitt_modbus(buf,offset,length);
  41. }
  42. /**
  43. * crc16_ccitt_modbus算法(两字节)
  44. * @param buf
  45. * @return
  46. */
  47. public static int crc16_ccitt_modbus_short(byte[] buf) {
  48. return (short)crc16_ccitt_modbus(buf,0,buf.length);
  49. }

转载于:https://www.cnblogs.com/eguid/p/9667144.html

CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现相关推荐

  1. 三种CRC16 C语言算法理解(CCITT)

    三种CRC16的算法实现,结合自己的理解记录一下: 一.先说算法的C语言实现和各算法的优缺点: 1.按位计算CRC 代码如下 uint16_t crc_16(uint8_t *data, uint16 ...

  2. C++与JAVA代码实现CRC-16/MODBUS算法,且与 http://www.ip33.com/crc.html 进行结果验证

    CRC-16/MODBUS的多项式为:x16+x15+x2+1(8005),宽度为16.运算时,首先将一个16位的寄存器预置为11111111 11111111,然后连续把数据帧中的每个字节中的8位与 ...

  3. crc16检验 python_Python CRC16校验算法

    def crc16(x, invert): a = 0xFFFF b = 0xA001 for byte in x: a ^= ord(byte) for i in range(8): last = ...

  4. python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS

    python crc-16 crc-16校验码 crc-16校验算法 ppp(MAC)帧检验序列FCS 想弄明白这里要看多几遍,配合下面的例子能更快理解. 第一.CRC-16校验码计算方法: 常用查表 ...

  5. 最大流算法之三:ISAP

    最大流算法之三:ISAP <转> (2009-08-14 19:24:27) 转载▼ 标签: it 分类: 理论 通常的 SAP 类算法在寻找增广路时总要先进行 BFS,BFS 的最坏情况 ...

  6. 五大常用算法之三:贪心算法

    一.基本概念: 所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解. 贪心算法没有固定的算法框架,算法设计的关键 ...

  7. 五大算法之三--贪心算法

    一.基本概念:        所谓贪心算法是指,在对问题求解时,总是做出在当前看来是最好的选择.也就是说,不从整体最优上加以考虑,他所做出的仅是在某种意义上的局部最优解.      贪心算法没有固定的 ...

  8. 【JVM进阶之路】垃圾回收机制和GC算法之三色标记(三)

    JVM往期文章 [JVM进阶之路]内存结构(一) [JVM进阶之路]玩转JVM中的对象(二) 上篇文章中讲到JVM中的对象以及判断对象的存活,那么对于"已死"的对象应该如何处理,怎 ...

  9. 深入理解JVM之三:垃圾回收算法

    原文:http://blog.csdn.net/dd864140130/article/details/50084471 1. 标记--清除算法(Mark-Sweep) 标记--清除算法是第一种使用和 ...

最新文章

  1. java代码段替换,java-片段添加或替换不起作用
  2. java属于高级语言_以下哪种语言属于高级语言________________。A、JavaB、C++C、VisualBa...
  3. pyc文件反编译为py文件
  4. python web框架django_Python Web应用框架 Django
  5. go和java线程,Go的多线程和pthread或Java线程有什么区别?
  6. 怎么将arcgis新建工具条如何保存_ArcGIS中寻找最短路径的方法
  7. 获取手机信息(UIDevice、NSBundle、NSLocale)
  8. centos7根据端口查进程_记录一次CentOs7下Nginx+WSGI部署Django项目(超详细)
  9. idea重写接口没有@override_乐字节|Java8核心实战-接口默认方法
  10. Atitit.js javascript异常处理机制与java异常的转换 多重catc hDWR 环境 .js exception process Vob7
  11. c语言的程序的基本示例
  12. Scratch3.0安装教程
  13. 牛顿法与拟牛顿法求解比较
  14. Cluster - 基本概念
  15. Quartz定时任务自学
  16. 【HTML+CSS之小米商城页面图】
  17. 2021 TWeb 腾讯前端技术大会精彩回顾(附PPT)
  18. 五面阿里拿下飞猪事业部offer,统统给你解决!
  19. windows 安装metis_图划分软件Metis的使用(win10+vs2017)
  20. 2021软件评测师真题

热门文章

  1. 机器学习:最大似然估计与最大后验概率估计
  2. Spring源码解析——如何阅读源码
  3. Jenkins自动编译库并上传服务器
  4. 【案例】数据量猛增,BI分析效率太低怎么破?
  5. 一起看一下主流应用使用了哪些三方库
  6. 当Terraform遇上ECS(一)——DataSource篇
  7. msbuild explorer
  8. SQL Server文本和图像函数
  9. MySQL学习笔记(二)—— MySQL的安装
  10. 【转】建立公用程序库,提升软件开发生产力