java CRC(1021型, x16+x12+x5+1)

public class crcMain {
    //crc16 -1021型校验,  
    //CRC16-CCITT  x16+x12+x5+1   1021   ISO HDLC, ITU X.25, V.34/V.41/V.42, PPP-FCS
public static int[] Crc16Calc(byte[] data_arr, int data_len)
{
    int crc16 = 0;
        int i;
        for(i =0; i < (data_len); i++)
           {
        crc16 = (char)(( crc16 >> 8) | (crc16 << 8));
        crc16 ^= data_arr[i]& 0xFF;
        crc16 ^= (char)(( crc16 & 0xFF) >> 4);
        crc16 ^= (char)(( crc16 << 8) << 4);
        crc16 ^= (char)((( crc16 & 0xFF) << 4) << 1);
        }
        int [] result=new int[2];
        result[0]= (crc16/256) ;
        result[1]= (crc16%256) ;
        return result;
}
public static void main(String[] args) {
    byte[] aa = {0x02, 0x05, 0x00, 0x03, (byte) 0xff, 0x00,0x00,0x01 };
     //
    int[] result=Crc16Calc(aa,aa.length);
    //System.out.println(new String(result));
    System.out.println(String.format("0x%02x", result[0])+","+String.format("0x%02x", result[1]));

}
}

时间: 2024-11-05 21:48:35

java CRC(1021型, x16+x12+x5+1)的相关文章

java ,CRC(8005型,x16+x15+x2+1)

/**  * CRC16相关计算      CRC-16  x16+x15+x2+1            8005      IBM SDLC * encode: utf-8  *   * @author trb  * @date 2014-12-25  */  public class CRC16 {      static byte[] crc16_tab_h = { (byte) 0x00, (byte) 0xC1, (byte) 0x81, (byte) 0x40, (byte) 0x

CRC-16/XMODE X16+X12+X5+1 C#环境下实现

private byte[] CRC(byte[] x, int len) //CRC校验函数 { byte[] temdata = new byte[2]; UInt16 crc = 0; byte da; int i = 0; UInt16[] yu = { 0x0000,0x1021,0x2042,0x3063,0x4084,0x50a5,0x60c6,0x70e7, 0x8108,0x9129,0xa14a,0xb16b,0xc18c,0xd1ad,0xe1ce,0xf1ef }; wh

JAVA的整型与字符串相互转换

JAVA的整型与字符串相互转换 1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或 i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 String ? A

(转)JAVA的整型与字符串相互转换

JAVA的整型与字符串相互转换1如何将字串 String 转换成整数 int? A. 有两个方法: 1). int i = Integer.parseInt([String]); 或         i = Integer.parseInt([String],[int radix]); 2). int i = Integer.valueOf(my_str).intValue(); 注: 字串转成 Double, Float, Long 的方法大同小异. 2 如何将整数 int 转换成字串 Str

java 中double型转化成int型(转)

java 中double型转化成int型 一个变量 double x: //不进行四舍五入操作: (int)x //进行四舍五入操作: Integer.parseInt(new java.text.DecimalFormat("0").format(x))

java是编译型还是解释型语言/

有人说Java是编译型的.因为所有的Java代码都是要编译的,.java不经过编译就无法执行. 也有人说Java是解释型的.因为java代码编译后不能直接运行,它是解释运行在JVM上的,所以它是解释型的.对于C和C++,它们经过一次编译之后,可以由操作系统直接执行,所以它们是编译型语言.而Java不一样,它首先由编译器编译成.class(字节码)文件,然后在通过JVM从.class文件中读一行解释执行一行,所以它是解释型的语言.也正是由于java对于多种不同的操作系统有不同的JVM,所以实现了真

java设计模式--行为型模式--迭代模式

1 迭代器模式 2 概述 3 给定一个语言,定义它的文法的一种表示,并定义一个解释器,这个解释器使用该表示来解释语言中的句子. 4 5 6 适用性 7 1.访问一个聚合对象的内容而无需暴露它的内部表示. 8 9 2.支持对聚合对象的多种遍历. 10 11 3.为遍历不同的聚合结构提供一个统一的接口(即,支持多态迭代). 12 13 14 参与者 15 1.Iterator 16 迭代器定义访问和遍历元素的接口. 17 18 2.ConcreteIterator 19 具体迭代器实现迭代器接口.

java设计模式--行为型模式--命令模式

1 命令模式 2 概述 3 将一个请求封装为一个对象,从而使你可用不同的请求对客户进行参数化:对请求排队或记录请求日志,以及支持可撤消的操作. 4 5 6 适用性 7 1.抽象出待执行的动作以参数化某对象. 8 9 2.在不同的时刻指定.排列和执行请求. 10 11 3.支持取消操作. 12 13 4.支持修改日志,这样当系统崩溃时,这些修改可以被重做一遍. 14 15 5.用构建在原语操作上的高层操作构造一个系统. 16 17 18 参与者 19 1.Command 20 声明执行操作的接口.

JAVA 长整型转换为IP地址的方法

代码如下: /** * 整型解析为IP地址 * @param num * @return */ public static String int2iP(Long num) { String str = null; Long[] tt = new Long[4]; tt[0] = (num >>> 24) >>> 0; tt[1] = ((num << 8) >>> 24) >>> 0; tt[2] = (num <&