⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc_check.c

📁 实现了CRC检验的过程
💻 C
字号:
#include <stdio.h>
#define  ADDEDTERMINAL           12

int main()
{
    int crc[13]={1,1,0,0,0,0,0,0,0,1,1,1,1};//常用crc码crc-12:生成多项式D12+D11+D3+D2+D+1
    int send_data[5000],dtag=0,left[ADDEDTERMINAL],rtag=ADDEDTERMINAL,chushu[ADDEDTERMINAL+1],c,i,j,k,m;
    printf("please input binary send_data:");
    while((c=getchar())!='\n'){
         send_data[dtag++]=c-'0';
    }
    for(i=0;i<ADDEDTERMINAL;i++)send_data[dtag++]=0;
    for(i=0;i<dtag;i++)printf("%d",send_data[i]);
    printf("\n");
    
    for(i=0;i<=ADDEDTERMINAL;i++)chushu[i]=send_data[i];
     m=ADDEDTERMINAL;
     while(m<dtag){
         j=0;
         for(i=0;i<=ADDEDTERMINAL;i++){
             chushu[j]=chushu[i]^crc[j];
             j++;
         }
         for(i=0;i<j;i++){
            if(chushu[i])break;
         }
         m+=i;
         if(m>=dtag){
           for(j=0;j<=ADDEDTERMINAL-i;j++)chushu[j]=chushu[j+i];
           for(k=m-i+1;k<dtag;k++)chushu[j++]=send_data[k];
           rtag=ADDEDTERMINAL-(ADDEDTERMINAL+1-i+dtag-(m-i)-1);
           break; 
         }
         for(j=0;j<=ADDEDTERMINAL-i;j++)chushu[j]=chushu[j+i];
         k=1;
         for(j=ADDEDTERMINAL-i+1;j<=ADDEDTERMINAL;j++){
            chushu[j]=send_data[m+k-i];
            k++;
         }
    }   
    j=0;
    for(i=0;i<rtag;i++)left[j++]=0;
    for(i=0;i<ADDEDTERMINAL-rtag;i++)left[j++]=chushu[i];
    printf("the left is:");
    for(i=0;i<ADDEDTERMINAL;i++)printf("%d",left[i]);
    printf("\n");
    
    for(i=0;i<ADDEDTERMINAL;i++)send_data[dtag-1-i]=send_data[dtag-1-i]^left[ADDEDTERMINAL-1-i];
    printf("the right sending send_data is:");
    for(i=0;i<dtag;i++)printf("%d",send_data[i]);
    putchar(10);
    printf("input sending send_data:");
    dtag=0;
    while((c=getchar())!='\n'){
         send_data[dtag++]=c-'0';
    }
    for(i=0;i<=ADDEDTERMINAL;i++)chushu[i]=send_data[i];
     m=ADDEDTERMINAL;
     while(m<dtag){
         j=0;
         for(i=0;i<=ADDEDTERMINAL;i++){
             chushu[j]=chushu[i]^crc[j];
             j++;
         }
         for(i=0;i<j;i++){
            if(chushu[i])break;
         }
         m+=i;
         if(m>=dtag){
           for(j=0;j<=ADDEDTERMINAL-i;j++)chushu[j]=chushu[j+i];
           for(k=m-i+1;k<dtag;k++)chushu[j++]=send_data[k];
           rtag=ADDEDTERMINAL-(ADDEDTERMINAL+1-i+dtag-(m-i)-1);
           break; 
         }
         for(j=0;j<=ADDEDTERMINAL-i;j++)chushu[j]=chushu[j+i];
         k=1;
         for(j=ADDEDTERMINAL-i+1;j<=ADDEDTERMINAL;j++){
            chushu[j]=send_data[m+k-i];
            k++;
         }
    }   
    j=0;
    for(i=0;i<rtag;i++)left[j++]=0;
    for(i=0;i<ADDEDTERMINAL-rtag;i++)left[j++]=chushu[i];
    printf("the left is:");
    for(i=0;i<ADDEDTERMINAL;i++)printf("%d",left[i]);
    printf("\n");
    for(i=0;i<ADDEDTERMINAL;i++)if(left[i])break;
    if(i==ADDEDTERMINAL)printf("right\n");
    else printf("wrong\n");
    return 0;
} 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -