计算冗余码

    // 计算冗余码
    public static String getCrc(String dataStr, String gxStr){
        int data = Integer.valueOf(dataStr, 2);
        int gx = Integer.valueOf(gxStr, 2);
        int dataStrlen = dataStr.length();
        int gxStrlen = gxStr.length();
        BigInteger bi = new BigInteger("2");
        int flag = bi.pow(dataStrlen+gxStrlen-2).intValue();
        data = data<<(gxStrlen-1);
        gx = gx<<(dataStrlen-1);
        for(int i=0;i<(dataStrlen);i++){
            if((data&flag)!=0){
                data = data^gx;
                gx = gx>>1;
            }else{
                gx = gx>>1;
            }
            flag = flag>>1;
        }
        StringBuilder crc = new StringBuilder(Integer.toBinaryString(data));
        while (crc.length()<(gxStrlen-1)){
            crc.insert(0, "0");
        }
        return crc.toString();
    }

 

posted @ 2022-08-17 09:50  以安~  阅读(103)  评论(0)    收藏  举报