包含java接收端crc16的词条

包含java接收端crc16的词条

  用java编写一个获得CRC校验码的javabean

  private static String mkCrc16(String str) {

  CRC16 crc16 = new CRC16();

  byte[] b = str.getBytes();

  for (int i = 0; i b.length; i++)

  crc16.update(b[i]);

  return Integer.toHexString(crc16.value);

  }

包含java接收端crc16的词条

  private static String mkCrc(String string) throws Exception {

  CRC32 crc32 = new CRC32();

  crc32.update(string.getBytes());

  return Long.toHexString(crc32.getValue());

  }

  public class CRCUtil {

  public static final int evalCRC16(byte[] data) {

  int crc = 0xFFFF;

  for (int i = 0; i data.length; i++) {

  crc = (data[i] 8) ^ crc;

  for (int j = 0; j 8; ++j)

  if ((crc 0x8000) != 0)

  crc = (crc 1) ^ 0x1021;

  else

  crc = 1;

  }

  return (crc ^ 0xFFFF) 0xFFFF;

  }

  }

  crc校验求java到啊

  public class CRC16 { public static String crc16(String src,int len){

  int crc = 0x0000FFFF;

  short tc;

  char sbit;

  for(int i=0;ilen; i++){

  tc = (short)(crc 8);

  crc = ((tc ^ src.charAt(i)) 0x00FF); for(int r=0;r8;r++){

  sbit = (char)(crc 0x01);

  crc = 1; //�1�7�1�7�1�7�0�6�1�7�1�7�1�7�1�7�1�7�1�7�1�7�0�5λ

  if(sbit != 0)crc =(crc^0xA001) 0x0000FFFF; }

  }

  //Integer.toHexString(crc);

  return Integer.toHexString(crc);

  }

  }

  请教一个crc16校验算法的问题:程序每句话是什么意思,做什么用的,急用!!谢谢~~

  以下内容可能对你有用呀。好好看看就明白了。

  CRC校验

  采用CRC-16,即2字节冗余循环码CRC,低字节在前。CRC码由发端计算,放置于发送消息帧的尾部,接收端再重新计算接收到信息的CRC码,比较计算得到的CRC码是否与接收到的相符,若不符则表明出错。CRC码的计算包括整个消息内容,计算时只用8位数据位,而起始位、停止位及可能的校验位均不参与CRC计算。

  CRC校验可以100%检测出所有奇数个随机错误。CRC-16校验可以检测出长度小于等于16的突发错误,可以保证在1014 bit码元中只含有1位未被检测出的错误。CRC-16的具体算法有多种,以下是一个例子。

  1.置16位寄存器为全1,作为CRC寄存器。

  2.把一个8位数据与16位CRC寄存器的低字节相异或,把结果放于CRC寄存器中。

  3.把寄存器的内容右移一位(朝低位),用0填补最高位,检查最低位(移出位)。

  4.如果最低位为0,重复③(再移位);如果最低位为1,CRC寄存器与多项式A001H(1010 0000 0000 0001)进行异或。

  5.重复③、④,直到右移8次,这样整个8位数据全部进行了处理。

  6.重复②-⑤,进行下一个8位数据的处理。

  7.将一帧的所有数据字节处理完后得到CRC-16寄存器。

  8.将CRC-16寄存器的低字节和高字节交换,得到的值即为CRC-16码。

  JAVA怎么做CRC校验的程序

  实现方法:最简单的校验就是把原始数据和待比较数据直接进行比较,看是否完全一样这种方法是最安全最准确的。同时也是效率最低的。

  应用例子:龙珠cpu在线调试工具bbug.exe。它和龙珠cpu间通讯时,bbug发送一个字节cpu返回收到的字节,bbug确认是刚才发送字节后才继续发送下一个字节的。 实现方法:在数据存储和传输中,字节中额外增加一个比特位,用来检验错误。校验位可以通过数据位异或计算出来。

  应用例子:单片机串口通讯有一模式就是8位数据通讯,另加第9位用于放校验值。

  bcc异或校验法(block check character)

  实现方法:很多基于串口的通讯都用这种既简单又相当准确的方法。它就是把所有数据都和一个指定的初始值(通常是0)异或一次,最后的结果就是校验值,通常把它附在通讯数据的最后一起发送出去。接收方收到数据后自己也计算一次异或和校验值,如果和收到的校验值一致就说明收到的数据是完整的。

  校验值计算的代码类似于:

  unsigned uCRC=0;//校验初始值

  for(int i=0;iDataLenth;i++) uCRC^=Data[i];

  适用范围:适用于大多数要求不高的数据通讯。

  应用例子:ic卡接口通讯、很多单片机系统的串口通讯都使用。 (Cyclic Redundancy Check)

  实现方法:这是利用除法及余数的原理来进行错误检测的

  java crc16校验中 设置CRC寄存器,并给其赋值FFFF(hex)?怎么解释怎么写?

  这是16位CRC校验吧,这里的寄存器是用来放校验值的,可以如下定义:

  int crc = 0xFFFF;

  java中CRC算法是个什么东东

  CRC算法实现有2种方法,一、查表法,二、直接计算,查表法的计算速度相对来说比较快,本人介绍的方法是直接计算法,用了2种方法实现,都是面向对象进行算法的封装。

  package com.wms.serial;

  /**

  * @author linduo

  * @version 2006/08/25

  */

  public class CRC16{

  public int value;

  public CRC16()

  {

  value = 0;

  }

  /** update CRC with byte b */

  public void update(byte aByte)

  {

  int a, b;

  a = (int) aByte;

  for (int count = 7; count =0; count–) {

  a = a 1;

  b = (a 8) 1;

  if ((value 0x8000) != 0) {

  value = ((value 1) + b) ^ 0x1021;

  } else {

  value = (value 1) + b;

  }

  }

  value = value 0xffff;

包含java接收端crc16的词条

  return;

  }

  /** reset CRC value to 0 */

  public void reset()

  {

  value = 0;

  }

  public int getValue()

  {

  return value;

  }

  public static void main(String[] args) {

  CRC16 crc16 = new CRC16();

  byte[] b = new byte[]{

  //(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

  (byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

  ,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

  ,(byte) 0x00,(byte)0x00

  };

  for (int k = 0; k b.length; k++)

  {

  crc16.update(b[k]);

  }

  System.out.println(Integer.toHexString(crc16.getValue()));

  System.out.println(Integer.toHexString(b.length));

  }

  }

  package com.wms.serial;

  public class CRC162 {

  public static final void main(String[] args){

  CRC162 crc16 = new CRC162();

  byte[] b = new byte[]{

  //(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

  (byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

  ,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

  ,(byte) 0x00,(byte)0x00

  };

  System.out.println(Integer.toHexString(crc16.encode(b)));

  //再把这个2f49替换成b数组的最后两个字节的数组,生成一个新的数组b2

  byte[] b2 = new byte[]{

  //(byte) 0xF0,(byte)0xF0,(byte)0xF0,(byte)0x72

  (byte) 0x2C,(byte)0x00,(byte)0xFF,(byte)0xFE

  ,(byte) 0xFE,(byte)0x04,(byte)0x00,(byte)0x00

  ,(byte) 0x2f,(byte)0x49

  };

  System.out.println(Integer.toHexString(crc16.encode(b2))); //算出来是 0

  //你可以自已构造一些byte进行加解密试试

  }

  public short encode(byte[] b){

  short CRC_x = 0;

  int pp = 65536; // 116;

  int pp2 = 69665; // (116) + (112) + (15) + 1

  for(int i=0;ib.length;i++){

  for(int j=0;j8;j++){

  CRC_x = (short)((CRC_x1) + (((b[i]j)0x80)7));

  if((CRC_x/pp) == 1){

  CRC_x=(short)(CRC_x^pp2);

  }

  }

  }

  return CRC_x;

  }

  }

以上【 包含java接收端crc16的词条 】是嗨壳技术分享网(www.heikehao.com)编辑整理。嗨壳技术分享网包含技术投稿、C语言、Excel、Java、Linux、网络安全和账号安全等丰富的栏目,并分享一些互联网安全技术知识和安全防护经验,帮助网友注重网络安全,让网络安全不再是问题。

原创文章,作者:java,如若转载,请注明出处:https://www.heikehao.com/22675.html

(0)
javajava
上一篇 2022年6月21日
下一篇 2022年6月21日

相关推荐

  • 关于java解析808协议的信息

    关于java解析808协议的信息 大家并不陌生,借来给大家详细说说吧!   4046是什么端口   1、,打印端口是否正确。对着你的打印机右键属性,端口,看看是否正确,USB线别选…

    2023年10月23日
  • 手机java微信jar下载失败的简单介绍

    手机java微信jar下载失败的简单介绍   小米手机为什么无法安装微信?   小米2s不能安装微信的原因可能有:可能是手机网络原因软件数据包没下载完造成的,可以尝试重新下载安装包…

    2020年4月21日
  • 康佳java面试 – 康佳集团校园招聘

    今日,嗨壳技术分享网小编分享康佳java面试 – 康佳集团校园招聘 相关内容,内容如下。   康佳入职审核需要多久   但是,根据一般的审核流程来看,时间也不会超过两周…

    2021年1月1日
  • java打开保存文件怎么打开方式

    java打开保存文件怎么打开方式 大家并不陌生,借来给大家详细说说吧!   怎么用Java实现打开文件(打开方法)?   1、可以用java执行cmd命令的方式打开程序,比如上面是…

    2020年2月10日
  • 支持java的手机有哪些?支持java十大经典机型

    随着智能手机的普及,曾经独霸市场的诺基亚如今已经成为了历史,但它给人们留下的不仅仅是记忆,更是一段辉煌的历史。对于曾经的诺基亚粉丝来说,那些经典的机型依然让人难以忘怀。让我们一起重…

    2023年11月24日 java
  • 声控系统开发javapython(智能声控系统)

    今天,嗨壳技术分享网给大家整理一些声控系统开发javapython(智能声控系统)内容。   今天给各位分享声控系统开发javapython的知识,其中也会对智能声控系统进行解释,…

    2020年6月2日
  • java单结算路径订单id

    java单结算路径订单id 大家并不陌生,借来给大家详细说说吧!   javaee编程题,订单(订单号,订单日期,用户姓名,送货地址) 送货地址为地址类型   第一个不就是一对多吗…

    2020年2月25日
  • 图形界面设计java

    图形界面设计java 大家并不陌生,借来给大家详细说说吧!   JAVA图形界面设计   在awt/swing里绘制圆形的方法是   g.drawOval(x, y,width, …

    2021年5月15日
  • 吴威java视频,5v吴威

    关于吴威java视频,5v吴威话题,今日,嗨壳技术分享网小编抽出大半天的时间整理一些吴威java视频,5v吴威内容,让我们一起了解一些技术吧!   济南易途吴威教java怎么样啊?…

    2020年9月25日
  • 计算java程序运行时间,java中计算程序运行时间

    今天,嗨壳技术分享网给大家整理一些计算java程序运行时间,java中计算程序运行时间内容。   java代码运行10次的时间   当value值等于100000,使用方法一,运行…

    2020年2月24日