首页 > 编程知识 正文

用c语言实现crc校验,采用crc进行差错校验

时间:2023-05-03 21:41:36 阅读:225614 作者:961

基于c语言的crc4校验和奇校验

包含无错错一位错两位的验证

crc4校验:

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define MAX 32767.0

void c4(int crcnxdxrz,int crc4nxdxrz)//校验函数

{

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<5; a++)

{

crc[i+a]=abs(crc[i+a]-crc4[a]);

}

}

}

for (int i=40; i<44; i++) {

printf("%d",crc[i]);

}

}

int main(int argc, const char * argvnxdxrz) {

// 生成校验位

int crc[44];

int crc_change[44];

int crc4[5]={1,0,0,1,1};

printf(“crc4校验:n”);

printf(“输入的信号:”);

for(int i=0;i<40;i++)

{

crc[i]=round((double)(rand()%10)/10);

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

for (int i=40;i<44;i++)

{

crc[i]=0;

}

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<5; a++)

{

crc[i+a]=abs(crc[i+a]-crc4[a]);

}

}

}

//校验位

printf(“校验位:”);

for (int i=40; i<44; i++)

{

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

//

for (int i=0; i<44; i++)

{

crc[i]=crc_change[i];

}

//无错校验

printf("n");

printf(“无错余数:”);

c4(crc,crc4);

//错一位校验

crc[0]=abs(crc[0]-1);

printf("n");

printf(“错一位余数:”);

c4(crc,crc4);

//错两位校验

crc[43]=abs(crc[43]-1);

printf("n");

printf(“错两位余数:”);

c4(crc,crc4);

//错随机位校验

crc[43]=abs(crc[43]-1);

crc[0]=abs(crc[0]-1);

int q=rand()%44;

crc[q]=abs(crc[q]-1);

printf("n");

printf(“错随机位余数:”);

c4(crc,crc4);

printf("n");

return 0;

}

#include <stdio.h>

#include <math.h>

#include <stdlib.h>

#define MAX 32767.0

void c2(int crcnxdxrz,int crc2nxdxrz)

{

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

for (int a=1; a<2; a++)

{

crc[i+a]=abs(crc[i+a]-crc2[a]);

}

}

}

for (int i=40; i<41; i++) {

printf("%d",crc[i]);

}

}

int main(int argc, const char * argvnxdxrz) {

// 生成校验位

int crc[41];

int crc_change[41];

int crc2[2]={1,0};

printf(“奇校验:n”);

printf(“输入的信号:”);

for(int i=0;i<40;i++)

{

crc[i]=round((double)(rand()%10)/10);

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

for (int i=40;i<41;i++)

{

crc[i]=0;

}

for (int i=0; i<40; i++) {

if(crc[i]==1)

{

//crc[i+4]=1;

for (int a=1; a<2; a++)

{

crc[i+a]=abs(crc[i+a]-crc2[a]);

}

}

}

//校验位

printf(“校验位:”);

for (int i=40; i<41; i++)

{

crc_change[i]=crc[i];

printf("%d",crc[i]);

}

//

for (int i=0; i<41; i++)

{

crc[i]=crc_change[i];

}

//无错校验

printf("n");

printf(“无错余数:”);

c2(crc,crc2);

//错一位校验

crc[0]=abs(crc[0]-1);

printf("n");

printf(“错一位余数:”);

c2(crc,crc2);

//错两位校验

crc[40]=abs(crc[40]-1);

printf("n");

printf(“错两位余数:”);

c2(crc,crc2);

//错随机位校验

crc[40]=abs(crc[40]-1);

crc[0]=abs(crc[0]-1);

int q=rand()%40;

crc[q]=abs(crc[q]-1);

printf("n");

printf(“错随机位余数:”);

c2(crc,crc2);

printf("n");

return 0;

}

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。