一个简单的Java计算CRC16_CCITT/True校验码的demo,方法比较笨拙,效率不高
使用byte数组存储可能会出现转换出负数的情况造成计算错误
一个在线的CRC计算器推荐:http://www.ip33.com/crc.html
package CRC16; // CRC-CCITT , CRC-16/CCITT-TRUE , CRC-16/KERMIT class crc16 { public static String CCITT(String Source) { /* * CRC16_CCITT: * 多项式x^16+x^12+x^5+1(0x1021),初始值0x0000,低位在前,高位在后,结果与0x0000异或; * */ int crc = 0x0000; //初始值 int polynomial = 0x1021; //多项式 String tmp; Source = Source.replace(" ", ""); int[] ints = new int[Source.length() / 2]; for (int i = 0; i < Source.length() - 1; i++) { if (i % 2 == 0) { tmp = Source.substring(i, i + 2); ints[i / 2] = Integer.parseInt(tmp, 16);