crc算法java_c语言的crc16算法转java

一、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

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

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

相关文章

Java第三阶段学习(三、字符流、转换流)

一、字节流读取中文时出现的问题&#xff1a; 文件中有中文时&#xff0c;用字节流读取会出现乱码的问题&#xff0c;因为一个中文为两个字节。 二、字符编码表 编码表&#xff1a;其实就是生活中字符和计算机二进制的对应关系表。 1、ascii&#xff1a; 一个字节中的7位就可以…

windows下OpenSSL加密证书安装步骤与使用方法

OpenSSL加密证书一般用于签名认证&#xff0c;含私钥和公钥。在Linux系统中&#xff0c;OpenSSL一般是已经安装好了&#xff0c;可以直接使用。而在Windows系统中&#xff0c;是需要安装使用的。 最近在使用支付平台时&#xff0c;用到了OpenSSL&#xff0c;鉴于此分享给大家&a…

linux运维(五)

头有点大&#xff0c;也浪费了一些时间。明天过后缓冲一下1、存储过程与触发器的区别&#xff1f;答&#xff1a;&#xff08;1&#xff09;触发器主要是通过事件执行触发而被执行的&#xff0c;而存储过程可以通过存储过程名称而直接调用。&#xff08;call/execute&#xff0…

django web 自定义通用权限控制

需求&#xff1a;web系统有包含以下5个url&#xff0c;分别对于不同资源&#xff1b; 1、stu/add_stu/ 2、stu/upload_homework/ 3、stu/query_homework/ 4、stu/add_record/ ----------------------------------------------------------------------------------------------…

java源码影视源码搭建教程_新版千月影视app源码+搭建教程

使用notepad批量替换URL【http://】为你的域名(被替换的域名访问有成品不能发布 需要修改的到前台confing里面查询)&#xff0c;替换名称【鲸鹰影视】为你的应用名称&#xff1b;服务端&#xff1a;1.将替换好的后端源码打包上传至站点根目录后解压&#xff1b;2.配置网站伪静态…

git学习相关的博客地址

Git分支管理策略&#xff1a; http://www.ruanyifeng.com/blog/2012/07/git.html Git 使用规范流程&#xff1a; http://www.ruanyifeng.com/blog/2015/08/git-use-process.html 基于git的源代码管理模型——git flow&#xff1a; http://www.ituring.com.cn/article/56870 Git…

Django框架基础学习

Django安装python下载地址 http://www.python.org/download/releases/3.3.4/Django的下载地址&#xff1a;https://www.djangoproject.com/download/1&#xff09;安装&#xff08;进到解压目录&#xff09;python setup.py install2、配置环境变量&#xff08;PATH&#xff09…

Uboot USB模式(RK3288变砖头的解决办法)

RK3288启动后有三种模式&#xff0c;可以分别进行操作。 第一种是normal也就是正常的启动模式。这个模式无法刷固件。一般板子通电就是这个模式 第二种是loader模式。就是刷固件模式。这个模式可以刷各种image。按住recover按键再通电&#xff0c;通过uboot的检测进入这个模式 …

java邮件实例_java邮件小实例

新建一个包&#xff0c;名为mail第一个类&#xff1a;MailSenderInfo.java###########################################package com.util.mail;/*** 发送邮件需要使用的基本信息*author by wangfunhttp://www.5a520.cn 小说520*/import java.util.Properties;public class Mai…

DEV GridView嵌套

/// <summary> /// 绑定主表和明显表到GridView /// </summary> /// <param name"machineProduct">主表</param> /// <param name"configureData">字表</param> private void Mas…

局域网大型文件分发的可能解决方案

客户原来的做法是把文件上传到服务器&#xff0c;然后后形成一个普通的HTTP地址下入网站后台系统&#xff0c;然后客户端用户看到后&#xff0c;则下载下来。但是随着文件越来越大&#xff0c;客户端下载量增加&#xff0c;在局域内网环境中这种文件分发方式的弊端立现。服务器…

android——获取ImageView上面显示的图片bitmap对象

获取的函数方法为&#xff1a;Bitmap bitmapimageView.getDrawingCache(); 但是如果只是这样写我们得到的bitmap对象可能为null值&#xff0c;正确的方式为&#xff1a; imageView.setDrawingCacheEnabled(true);Bitmap bitmapimageView.getDrawingCache();imageView.setDrawin…

java监听com口_简单了解Java接口+事件监听机制

1.接口&#xff1a;定义方法&#xff1a;public interface interName //extends interName2, interName3...可继承多个接口在接口里只能定义常量和抽象方法。public static final String Name;public abstract void method(String Name);//这里不能用大括号&#xff0c;不然就不…

例子:好友列表选中效果

<style type"text/css"> *{ margin:0px auto; padding:0px; font-family:微软雅黑; font-size:16px;} .f{ width:200px; height:30px; background-color:#63C; color:white; text-align:center; line-height:30px; vertical-align:middle; margin-top:3px} .f:…

sublime 常用插件

AutoFileName 文件提示路径&#xff0c;在img,script的[src]属性。link,a的[href]属性&#xff0c;background 的[url]属性后提示文件的路径 CSS Format css格式化工具 Pretty JSON json格式化工具转载于:https://www.cnblogs.com/zhangtao1990/p/9231608.html

有一句说一千句,是作家....

有一句说一千句&#xff0c;是作家&#xff0c;这叫文采&#xff1b;有一句说一百句&#xff0c;是演说家&#xff0c;这叫口才&#xff1b;有一句说十句&#xff0c;是教授&#xff0c;这叫学问&#xff1b;有一句说一句&#xff0c;是律师&#xff0c;这叫严谨&#xff1b;说…

java jsoup爬取动态网页_java通过Jsoup爬取网页(入门教程)

一&#xff0c;导入依赖org.jsoupjsoup1.10.3org.apache.httpcomponentshttpclient二&#xff0c;编写demo类注意不要导错包了,是org.jsoup.nodes下面的package com.taotao.entity;import org.apache.http.HttpEntity;import org.apache.http.client.methods.CloseableHttpResp…

Java设计模式之七大结构型模式

总体来说设计模式分为三大类&#xff1a;创建型模式、结构型模式和行为型模式。 结构型模式&#xff0c;共有七种&#xff1a;适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。 其中适配器模式主要分为三类&#xff1a;类的适配器模式、对象的适配…

一个Option请求引发的深度解析

在当前项目中&#xff0c;前端通过POST方式访问后端的REST接口时&#xff0c;发现两条请求记录&#xff0c;一条请求的Request Method为Options&#xff0c;另一条请求的Reuest Method为Post。想要解决这个疑惑还得从以下3个概念说起。 Http Options Method RFC2616标准&#x…

ionic+AnjularJs实现省市县三级联动效果

建议对ionic和AnjularJs有一定了解的人可以用到&#xff0c;很多时候我们要用到选择省份、城市、区县的功能&#xff0c;现在就跟着我来实现这个功能吧&#xff0c;用很少的代码&#xff08;我这里是根据客户的要求&#xff0c;只显示想要显示的部分省份和其相对应的城市、区县…