CRC校验代码

已有 445025个资源

下载专区

上传者其他资源

    文档信息举报收藏

    标    签:CRC

    分    享:

    文档简介

    CRC校验的代码,首先将用户输入的字符串转为二进制信息字段并左移16位后得到信息多项式,再利用生成多项式对信息多项式做模2除生成校验码,将16位的校验码拼接在左移空出的位置上,就是发送端发送的信息。由于传输过程中会有差错,所以接收方利用生成多项式对收到的信息同样做模2除检测,若余数为0,则传输过程中没有发生差错;若余数不为0,则传输过程中有差错。

    文档预览

    //---------------------------------------****CRC-16编码****-------------------------------------// #include #include #include //------自定义函数-------字符串转为二进制------- void trans(char str[],char erjinzhi[]) { int i,j; for(i=0;str[i]!='\0';i++) { for(j=i*8+7;j>=i*8;j--) { erjinzhi[j]=str[i]%2+'0'; str[i]=str[i]/2; } } } //------自定义函数---------二进制除法--------- void yihuo(char a[],char b[],char c[]) //对字符数组a和b进行异或运算,结果存于数组c { int i,j; for(i=0;a[i]!='1';i++); for(j=0;a[j]!='\0';j++) a[j]=a[j+i]; //检查高位是否为'0' for(i=0;b[i]!='\0';i++) c[i]=((int)a[i]^(int)b[i])+'0'; for(j=i;a[j]!='\0';j++) c[j]=a[j]; } //------自定义函数--------Error pattern-------- void recev(int k,char a[],char b[]) //k:差错模式选择 a:发送端消息 b:接受端消息 { char s[120]={'\0'}; int j; unsigned int i; for(i=0;i17) { for(i=0;remainder[i]!='1';i++); for(j=0;remainder[j]!='\0';j++) remainder[j]=remainder[j+i]; //检查余数高位是否为'0' if(strlen(remainder)>=17) yihuo(remainder,scdxs,remainder); } printf("最终接收端得到的余数为:\n"); printf("%s\n\n",remainder); for(i=0;remainder[i]!='\0';i++) { if(remainder[i]=='1') n++; } //检查余数是否为0 if(n==0) printf("余数为0,未检测出差错:\n"); else printf("余数不为0,差错被检测出:\n"); return 0; }

    Top_arrow
    回到顶部
    EEWORLD下载中心所有资源均来自网友分享,如有侵权,请发送举报邮件到客服邮箱bbs_service@eeworld.com.cn 或通过站内短信息或QQ:273568022联系管理员 高员外,我们会尽快处理。