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. /**
  26. * crc16_ccitt_modbus算法(四字节)
  27. * @param buf
  28. * @return
  29. */
  30. public static int crc16_ccitt_modbus(byte[] buf) {
  31. return crc16_ccitt_modbus(buf,0,buf.length);
  32. }
  33.  
  34.  
  35. /**
  36. * crc16_ccitt_modbus算法(两字节)
  37. * @param buf
  38. * @param offset
  39. * @param length
  40. * @return
  41. */
  42. public static int crc16_ccitt_modbus_short(byte[] buf,int offset, int length) {
  43. return (short)crc16_ccitt_modbus(buf,offset,length);
  44. }
  45.  
  46. /**
  47. * crc16_ccitt_modbus算法(两字节)
  48. * @param buf
  49. * @return
  50. */
  51. public static int crc16_ccitt_modbus_short(byte[] buf) {
  52. return (short)crc16_ccitt_modbus(buf,0,buf.length);
  53. }

CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现的更多相关文章

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

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

  2. CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现

    CRC16算法系列文章: CRC16算法之一:CRC16-CCITT-FALSE算法的java实现 CRC16算法之二:CRC16-CCITT-XMODEM算法的java实现 CRC16算法之三:CR ...

  3. 7.redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗?

    作者:中华石杉 面试题 redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?分布式寻址都有哪些算法?了解一致性 hash 算法吗? 面试官心理分析 在前几年, ...

  4. 基于改进人工蜂群算法的K均值聚类算法(附MATLAB版源代码)

    其实一直以来也没有准备在园子里发这样的文章,相对来说,算法改进放在园子里还是会稍稍显得格格不入.但是最近邮箱收到的几封邮件让我觉得有必要通过我的博客把过去做过的东西分享出去更给更多需要的人.从论文刊登 ...

  5. 图的生成树(森林)(克鲁斯卡尔Kruskal算法和普里姆Prim算法)、以及并查集的使用

    图的连通性问题:无向图的连通分量和生成树,所有顶点均由边连接在一起,但不存在回路的图. 设图 G=(V, E) 是个连通图,当从图任一顶点出发遍历图G 时,将边集 E(G) 分成两个集合 T(G) 和 ...

  6. [Algorithm] 群体智能优化算法之粒子群优化算法

    同进化算法(见博客<[Evolutionary Algorithm] 进化算法简介>,进化算法是受生物进化机制启发而产生的一系列算法)和人工神经网络算法(Neural Networks,简 ...

  7. 【转】常用聚类算法(一) DBSCAN算法

    原文链接:http://www.cnblogs.com/chaosimple/p/3164775.html#undefined 1.DBSCAN简介 DBSCAN(Density-Based Spat ...

  8. JVM内存管理------GC算法精解(复制算法与标记/整理算法)

    本次LZ和各位分享GC最后两种算法,复制算法以及标记/整理算法.上一章在讲解标记/清除算法时已经提到过,这两种算法都是在此基础上演化而来的,究竟这两种算法优化了之前标记/清除算法的哪些问题呢? 复制算 ...

  9. 常用聚类算法(一) DBSCAN算法

    1.DBSCAN简介 DBSCAN(Density-Based Spatial Clustering of Applications with Noise,具有噪声的基于密度的聚类方法)是一种基于密度 ...

随机推荐

  1. spark之pycharm开发设置

    方法一: __author__ = 'similarface' import os import sys os.environ['SPARK_HOME']="/Users/similarfa ...

  2. Excel COM组件使用的注意事项和一些权限问题(转载)

    1.实例化Excel的COM组件的时候,不要直接调用类,要用Microsoft提供的接口 原来的写法:Excel.ApplicationClass excelApp = new Excel.Appli ...

  3. Linux kernel 2.6下的modules编译与KBuild

    转载:http://blog.sina.com.cn/s/blog_602f87700100dq1u.html Sam之前在Linux kernel 2.4下写过一些driver.但自从转到kerne ...

  4. Visual Studio 2017 for Mac Preview

    Microsoft Visual Studio 2017 for Mac Preview 下载+安装+案例Demo 目录: 0. 前言 1. 在线安装器 2. 安装VS 3. HelloWorld 4 ...

  5. leetCode 88.Merge Sorted Array (合并排序数组) 解题思路和方法

    Given two sorted integer arrays nums1 and nums2, merge nums2 into nums1 as one sorted array. Note: Y ...

  6. python 基础 3.2 文件 for 练习

    #/usr/bin/python #coding=utf-8 #@Time   :2017/11/1 22:19 #@Auther :liuzhenchuan #@File   :1030-1031练 ...

  7. TCP交换数据流——Nagle算法简单记录

    Nagle算法: 该算法提出的目的是想解决网络中大量的小的TCP数据包造成网络拥塞的问题,举个例子,当客户端要发送一个字节的TCP数据包到服务器时,我们实际上产生了41字节长的分组:包括20字节的IP ...

  8. mysql一:操作数据库

    创建数据库是指在数据库空间中划出一块空间用来存储相关的数据,表就是存储在对应的数据库里面.首先来看下查看数据库的命令:show databases. 这个是用来查询数据库空间下所有的数据库,其中inf ...

  9. JDK动态proxy原理解析

    转: 之前虽然会用JDK的动态代理,但是有些问题却一直没有搞明白.比如说:InvocationHandler的invoke方法是由谁来调用的,代理对象是怎么生成的,直到前几个星期才把这些问题全部搞明白 ...

  10. matlab 在机器视觉中常用的函数

    ~ triangulate() 三角化(获得距离)匹配点 ~ undistortImage() 去除相机畸变并生成图像