欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

Java版CRC8和CRC16工具類

在Java開(kāi)發(fā)中,CRC校驗(yàn)是常用的一種校驗(yàn)方式,常見(jiàn)的CRC校驗(yàn)有CRC8和CRC16。下面將介紹Java版的CRC8和CRC16工具類。

CRC8:

public class CRC8Util {
private static final int polynominal = 0x8C;
private static final int initialValue = 0x00;
public static int crc8(byte[] bytes) {
int crc = initialValue;
for (byte b : bytes) {
crc ^= (b & 0xFF);
for (int i = 0; i< 8; i++) {
if ((crc & 0x80) != 0) {
crc = (crc<< 1) ^ polynominal;
} else {
crc<<= 1;
}
}
}
return crc;
}
}

CRC8的計(jì)算公式為X^8+X^2+X^1+1,使用CRC8Util.crc8(byte[] bytes)方法進(jìn)行計(jì)算。其中polynomial表示多項(xiàng)式0x8C,initialValue表示初始值0x00。

CRC16:

public class CRC16Util {
private static final int polynominal = 0x1021;
private static final int initialValue = 0xFFFF;
public static int crc16(byte[] bytes) {
int crc = initialValue;
for (byte b : bytes) {
crc ^= (b & 0xFF)<< 8;
for (int i = 0; i< 8; i++) {
if ((crc & 0x8000) != 0) {
crc = (crc<< 1) ^ polynominal;
} else {
crc<<= 1;
}
}
}
return crc;
}
}

CRC16的計(jì)算公式為X^16+X^15+X^2+1,使用CRC16Util.crc16(byte[] bytes)方法進(jìn)行計(jì)算。其中polynomial表示多項(xiàng)式0x1021,initialValue表示初始值0xFFFF。