遇到JAMCRC方式的CRC32效验问题,查遍了网络,没有现成的实现,经过查找资料和现有代码改进最终实现,下面是代码:
//private static int[] crc32Table ={....} 约定的crc32表
public static String getCRC32ForJAMCRC(String hex) {
byte[] bytes = hexToBytes(hex);//十六进制字符串转byte[]
int crc = 0xffffffff;
for (byte b : bytes) {
crc = (crc >>> 8 ^ crc32Table[(crc ^ b) & 0xff]);
}
crc = crc ^ 0x00000000;
return getRepair0(Integer.toHexString(crc).toUpperCase(),8);//此处getRepair0()是补0操作
}
//hexToBytes方法:十六进制字符串转byte[],网上很多
//getRepair0方法:补0的,很简单,自己实现吧