datasheet
超过460,000+ 应用技术资源下载
null

CRC校验代码

  • 1星
  • 日期: 2015-05-17
  • 大小: 4.44KB
  • 所需积分:1分
  • 下载次数:0
  • favicon收藏
  • rep举报
  • 分享
  • free评论
标签: 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; }
更多简介内容

评论

下载专区


TI最新应用解决方案

工业电子 汽车电子

$(function(){ var appid = $(".select li a").data("channel"); $(".select li a").click(function(){ var appid = $(this).data("channel"); $('.select dt').html($(this).html()); $('#channel').val(appid); }) })