CRC即循环冗余校验码(Cyclic Redundancy Check[1]  ):是数据通信领域中最常用的一种查错校验码,其特征是信息字段和校验字段的长度可以任意选定。循环冗余检查(CRC)是一种数据传输检错功能,对数据进行多项式计算,并将得到的结果附在帧的后面,接收设备也执行类似的算法,以保证数据传输的正确性和完整性。

package sk.ann;public class CRCCheck {public static void main(String[] args){String str="Java生成CRC16数据校验码";byte[] data=str.getBytes();System.out.println(CRCCheck.Make_CRC(data));}/*** 计算产生校验码* @param data 需要校验的数据* @return 校验码*/public static String Make_CRC(byte[] data) {byte[] buf = new byte[data.length];// 存储需要产生校验码的数据for (int i = 0; i < data.length; i++) {buf[i] = data[i];}int len = buf.length;int crc = 0xFFFF;//16位for (int pos = 0; pos < len; pos++) {if (buf[pos] < 0) {crc ^= (int) buf[pos] + 256; // XOR byte into least sig. byte of// crc} else {crc ^= (int) buf[pos]; // XOR byte into least sig. byte of crc}for (int i = 8; i != 0; i--) { // Loop over each bitif ((crc & 0x0001) != 0) { // If the LSB is setcrc >>= 1; // Shift right and XOR 0xA001crc ^= 0xA001;} else// Else LSB is not setcrc >>= 1; // Just shift right}}String c = Integer.toHexString(crc);if (c.length() == 4) {c = c.substring(2, 4) + c.substring(0, 2);} else if (c.length() == 3) {c = "0" + c;c = c.substring(2, 4) + c.substring(0, 2);} else if (c.length() == 2) {c = "0" + c.substring(1, 2) + "0" + c.substring(0, 1);}return c;}
}

Java生成CRC16数据校验码相关推荐

  1. 16进制字符串生成CRC-16/CCITT-FALSE校验码

    /*** @author yichuan@iscas.ac.cn* @version 1.0* @date 2021/11/8 21:51*/ public class Crc {/*** CRC-1 ...

  2. 异或校验 java_Java生成异或校验码、和校验码、CRC校验码、补码求和校验码四种校验码及校验码匹配工具类...

    Java生成异或校验码.和校验码.CRC校验码.补码求和校验码四种校验码及校验码匹配工具类 /** * 报文校验码验证规则 */ public class Verification { /** * 校 ...

  3. CRC-16/X25、CRC-16/CCITT_FALSE、CRC-16/XMODEM校验码

    这几天做北斗定位设备的协议解析,需要进行CRC-16的校验,设备使用的参数模型是CRC-16/X25,本人使用的是Java语言,网上没找到关于CRC-16/X25 的Java版本,都是C语言的多.转换 ...

  4. C# CRC16数据校验支持ModelBus和XMODEM校验模式

    C# CRC16数据校验支持ModelBus和XMODEM校验模式 最近在研究C# CRC数据校验规则,之前用过ModelBus模式,但是这次的现场用到的是XMODEM模式,写一篇文章记录实现细节,方 ...

  5. 将一个字符串计算出CRC16/XMODEM校验码(4位)

    将一个字符串计算出CRC16/XMODEM校验码(4位) unsigned short CRC16_XMODEM(unsigned char *puchMsg, unsigned int usData ...

  6. java生成文字二维码、url二维码

    java生成文字二维码.url二维码 pom: 1)生成文字二维码 java工具类: 2)url地址生成二维码 java工具类: pom: <dependency><groupId& ...

  7. 数据校验码(奇偶校验,海明校验,循环冗余校验)内容总结及个人经验分享

    引言: 常用的数据校验方法有三种:奇偶校验,海明校验和循环冗余校验(CRC).其对应的是三种不同而又有关联的码制,以下编者打算从它们的编码原理,需要的基础知识以及实例来对此进行大致的分析.在了解数据校 ...

  8. JAVA生成的二维码以及给二维码添加背景图片

    JAVA生成的二维码以及给二维码添加背景图片** 1.页面只需一行代码即可(用ajax请求得不到响应,也可以用表单提交) window.location.href = "${ctx}/qrc ...

  9. Java生成解析二维码

    Java生成二维码 一.介绍 1. 理解二维码 黑点代表二进制中的1,白点代表二进制中的0,通过1和0的排列组合,在二维空间记录数据.通过图像输入设备,读取其中的内容. 2. 二维码分类 二维码有不同 ...

最新文章

  1. 建造者模式(Builder Pattern)简单随笔
  2. 某种密码(password.*)
  3. 【转】托管函数的挂钩(完美版)
  4. python 调用bat失败_要想顺利通过Python面试,你最起码需要达到白银段位!
  5. 洛谷 4115 Qtree4——链分治
  6. 栈应用_检测成对符号是否正确使用(代码、分析、汇编)
  7. linux mysql5.6.27源码安装和错误解决
  8. 【java基础知识】设置表格内容居中显示,表格字体大小调整,表格列宽调整
  9. python处理网页弹窗_Selenium2+Python自动化-处理浏览器弹窗(转载)
  10. mybatis框架搭建学习初步
  11. 教你一招:Excel中使用vlookup函数查询序列所对应的值
  12. EndNote文献输出引用格式自定义修改与编辑界面解读
  13. 【AllenNLP】: 自定义predictor—输入文本输出中文
  14. 沟通:如何用沟通解决80%的工作问题?
  15. 对于教育改革的一些省思
  16. 使用LIS2DH12三轴加速度传感器检测震动与倾斜角度
  17. 人家也是干 IT 的。
  18. 【致远FAQ】V8.0sp2_8.0sp2版本协同BPM平台的人员匹配去重
  19. [转载]中国移动深度定制首推“0元购TD手机”补贴政策
  20. 区块链+慈善究竟帮助过谁?

热门文章

  1. 进程间通信的方式(四):信号量
  2. windows照片查看器无法显示此图片_Real3d PhotoViewer下载-照片查看器 v1.2.2 官方版...
  3. apache rewrite规则实现白名单
  4. Starry Night [USACO]
  5. go语言练习:幂、函授接收和返回参数、转义字符、变量和常量
  6. C语言复习:指针知识
  7. leaflet的入门开发(一)
  8. 如何更改github工程的语言属性
  9. 启动两个Tomcat的方法
  10. ODBC的多线程应用