crc - CRC校验码

循环冗余校验(Cyclic Redundancy Check, CRC)是一种根据网络数据包或电脑文件等数据产生简短固定位数校验码的一种散列函数,主要用来检测或校验数据传输或者保存后可能出现的错误, 具体请参考https://baike.baidu.com/item/CRC/1453359https://en.wikipedia.org/wiki/Cyclic_redundancy_check

TiJOS Framework中提供了CRC8, CRC16校验码运算。

Java包

tijos.framework.util

说明
CRC16_IBM IBM标准, 基于多项式X^16 + X^15 + X^2 + 1
CRC8 单总线标准, 基于多项工 X^8 + X^5 + X^4 + 1
CRC16_CCITT_FALSE CCITT FALSE标准,基于多项式X^16 + X^15 + X^2 + 1

CRC8

CRC8 校验码算法, 主要方法如下:

方法 说明
int compute (byte dataToCrc [], int seed) 对数组进行CRC计算,seed为初始值
int compute (byte dataToCrc [], int off, int len, int seed) 对数组从off偏移开始len长度数据进行CRC计算,seed为初始值

例程:

byte [] input = new byte[]{1,2,3,4,5,6,7,8};
int crc8 = CRC8.compute(input, 0);

CRC16校验码

根据CRC16 多项式的不同, CRC16支持多种标准,

相关类如下

CRC16 _IBM BM标准
CRC16_CCITT_FALSE CCITT FALSE标准

CRC16支持分段数据计算, 可通过update将数据进行连续处理,并通过getValue获取CRC值

主要方法如下:

方法 说明
void update(byte[] b) 对数组进行CRC16运算
void update(byte[] b, int off, int len) 对数组off开始len长度数据进行CRC16运算
int getValue() 获取CRC16结果

例程:

byte [] input = new byte[]{1,2,3,4,5,6,7,8};
CRC16_IBM crc16 = new CRC16_IBM();
crc16.update(input);
int crc = crc16.getValue(); //获取CRC16结果