如何定义CRC算法的多项式?

时间:2016-05-02 09:04:42

标签: java checksum crc

我编写了一个计算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();
}

然而我在定义多项式时遇到问题。 我已根据某个文件中提供的说明对其进行了定义: enter image description here

我的多项式应该是小p还是g? 谢谢你的帮助。

1 个答案:

答案 0 :(得分:0)

它是g。 24位CRC多项式具有x 24 作为最高功率项。