在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。
上一篇python百度詞條
下一篇flask合php