CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现

CRC16算法系列文章

CRC16算法之一:CRC16-CCITT-FALSE算法的java实现

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

CRC16算法之三:CRC16-CCITT-MODBUS算法的java实现

 

功能

实现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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/464953.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

建议去华为

提问&#xff1a;老师&#xff0c;您好&#xff01;我现在手里有两个offer&#xff0c;正在艰难抉择中&#xff0c;一个是小米的相机图像调校工程师&#xff08;camera tuning&#xff09;&#xff0c;工作地在深圳&#xff0c;工资是12k*14&#xff0c;还有大概700元的餐补&am…

Stimulsoft reports .net中创建变量

Stimulsoft reports .net中创建变量<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />变量中request from user 的使用&#xff1a;可以使你在外面指定日期的选择。根据用户需要去选择不同的条件。报表中code代码中也可以使用代码…

STM32CubeMx官网下载HAL库文档资料

1、直接搜STMCubeMxFxx即可。https://www.st.com/zh/embedded-software/stm32cubef4.html#documentation

HTML5学习笔记(一):初步印象

&#xff08;一&#xff09;什么是HTML5(1)HTML5 将成为 HTML、XHTML 以及 HTML DOM 的新标准。(二)HTML5的前世今生&#xff08;1&#xff09;HTML5 是 W3C 与 WHATWG 合作的结果。W3C&#xff08;万维网联盟&#xff09;&#xff1a;World Wide Web ConsortiumWHATWG &#x…

快学好这个去给学妹修热水器

作者&#xff1a;晓宇&#xff0c;排版&#xff1a;晓宇微信公众号&#xff1a;芯片之家&#xff08;ID&#xff1a;chiphome-dy&#xff09;2021年6月25号晚上9点&#xff0c;中国南方某一线城市&#xff0c;小张正在看着前阵子新出的电影误杀2&#xff0c;窗外&#xff0c;疲…

bzoj1233 单调队列优化dp

https://www.lydsy.com/JudgeOnline/problem.php?id1233 数据结构优化dp的代码总是那么抽象 题意&#xff1a;奶牛们讨厌黑暗。 为了调整牛棚顶的电灯的亮度&#xff0c;Bessie必须建一座干草堆使得她能够爬上去够到灯泡 。一共有N大包的干草&#xff08;1<N<100000&…

Win10系统添加 Win10 LTSC2019闹钟

1、本文主要针对没有windows闹钟的情况。 2、下载Win10 LTSC 2019闹钟应用&#xff0c;并解压&#xff1a; http://www.winwin7.com/soft/xtbd-2695.html 链接&#xff1a;https://pan.baidu.com/s/1S_g6XUIezeF8_Q0rJ09cBQ 提取码&#xff1a;68gs 3、搜索Windows Powershell&…

iPhone开发笔记[1/50]:初学iPhone上用Quartz 2D画图

参考了An iOS 4 iPhone Graphics Drawing Tutorial using Quartz 2D这篇文章&#xff0c;用了30分钟在iPhone上画出了一条直线&#xff0c;核心代码全在drawRect这个方法中&#xff1a; -(void)drawRect:(CGRect)rect { CGContextRef context UIGraphicsGetCurrentContext(); C…

MDK中利用宏定义__DATE__和__TIME__设置产品的代码固件版本

文章目录前言一、__DATE__和__TIME__是什么&#xff1f;二、使用步骤1.引入库2.参考代码总结前言 STM32开发中&#xff0c;利用宏定义的__DATE__和__TIME__设置产品的代码固件版本&#xff1a; 为了方便在编译代码的时候&#xff0c;自动生成代码固件的版本号&#xff0c;所以…

昨晚上跟读者闲聊

昨天发了一篇华为小米的求职文章&#xff0c;今天一个知识星球的朋友找我聊天&#xff0c;也是关于择业的问题。本来是聊找工作的&#xff0c;然后聊着聊着就聊到了生活的一些事情。我平时比较关注微信信息&#xff0c;有重要能回复就会回复&#xff0c;但是&#xff0c;也不喜…

上次作业的升级版

好好好 211606375 牛振乾 211606351 曾茜 一、预估与实际 PSP2.1Personal Software Process Stages预估耗时&#xff08;分钟&#xff09;实际耗时&#xff08;分钟&#xff09;Planning计划• Estimate• 估计这个任务需要多少时间4040Development开发9001000• Analysis• 需…

学习vim的正确姿势!

有很多种方法可以去学习Vim&#xff1a;vimtutor就是一个很棒的教程&#xff0c;另外还有help拥有您所想的所有参考信息。链接:https://github.com/wsdjeg/Learn-Vim_zh_cn但是在日常使用中&#xff0c;对于绝大部分用户的需求而言&#xff0c;vimtutor讲得太浅不能满足需要&am…

什么是自由软件?

来源 | www.gnu.org编排 | strongerHuang可能你认为免费软件&#xff0c;就是自由软件&#xff0c;那么你肯定错了&#xff0c;下面来听听专家怎么描述自由软件的。strongerHuang1自由软件定义开源&#xff08;Open source&#xff09;是另外一回事&#xff1a;它有基于不同价值…

输入框设置只能输入数字

HTML5 可以用&#xff1a;<input type"number">html4 的话只能用js实现了&#xff1a;<input type"text" οnkeyup"this.valuethis.value.replace(/\D/g, )">上面的只能输入整数。如果需要小数正则需要改成&#xff1a;/[^\d\.]/g再…

毕业设计| STM32F103全彩FFT音乐频谱+LED年历闹钟显示

大家好&#xff0c;我是写代码的篮球球痴&#xff0c;今天在后台看到有人想找毕业设计的点子。然后我今天刚好看到一个不错的点子&#xff0c;给大家分享看今天分享的毕设是来自点-凡自制的FTF音乐频谱制作&#xff0c;先来看展示效果&#xff1a;——视频出处&#xff1a;B站点…

VScode 开发stm32无法识别uint32_t,uint16_t,uint8_t问题

1、添加头文件#include “stdint.h”。 2、在c_cpp_properties.json文件中添加__CC_ARM即可。如下图&#xff1a;

动画讲解C语言的指针,从未如此简单

推荐阅读&#xff1a;专辑|Linux文章汇总专辑|程序人生专辑|C语言我的知识小密圈关注公众号&#xff0c;后台回复「1024」获取学习资料网盘链接。欢迎点赞&#xff0c;关注&#xff0c;转发&#xff0c;在看&#xff0c;您的每一次鼓励&#xff0c;我都将铭记于心~

SQL Activity Monitor

从实质上说, Actvity Monitor不过是SQL Server中系统View sys.sysprocesses的一种展现. SP_Who2应该也是从这里查询到的数据。下面是view sysprocesses的SELECT内容&#xff1a; SELECT spid, kpid, blocked, waittype, waittime, lastwaittype, waitresource, dbid, …

毕业这几年的嵌入式开发之路

大家好&#xff0c;我是写代码的篮球球痴今天分享一篇文章&#xff0c;这篇文章的主人公总结了他这些年来的嵌入式之路&#xff0c;希望对大家的职业规划有所帮助。在毕业即失业的年代&#xff0c;来看一位朋友是如何玩转嵌入式开发的&#xff0c;献给迷惘的你。出师不利本科毕…

修改Win10 alt+F4默认选项为关机

1、winr打开路径计算机\HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\Advanced&#xff0c;当前目录下新建DWORD(32位)文件&#xff0c;命名为“Start_PowerButtonAction”。设置值为2&#xff08;16进制&#xff09;。 2、重启电脑。altF4默认为“关…