我编写了一个计算CRC24校验和的代码:
public String CRC24Q(String str){
String devisor = "1100001100100110011111011";
String augmented = str + appendZeroes("0", 23);
StringBuilder checksum = new StringBuilder();
String tmp = augmented.substring(0, 24);
for (int j = 0; j < devisor.length()-1; j++){
if (tmp.charAt(j) == devisor.charAt(j)){
checksum.append('0');
} else {
checksum.append('1');
}
}
for (int i = 24; i < augmented.length()-1; i++){
tmp = checksum.toString().substring(1) + augmented.charAt(i);
checksum.setLength(0);
for (int j = 0; j < devisor.length(); j++){
if (tmp.charAt(j) == devisor.charAt(j)){
checksum.append('0');
} else {
checksum.append('1');
}
}
}
return checksum.toString();
}
然而我在定义多项式时遇到问题。 我已根据某个文件中提供的说明对其进行了定义:
我的多项式应该是小p还是g? 谢谢你的帮助。
答案 0 :(得分:0)
它是g。 24位CRC多项式具有x 24 作为最高功率项。