您申请加入课程:computer  networks  b
需要验证您的身份,请输入请求信息:
您的学号:
班级选择:
附注信息:

computer  networks  b-z6尊龙旗舰厅

https://www.scholat.com/course/comnetb2015
  • 创建者

    creator

    曾德泽
  • 活跃度

    activeness

  • 访问量

    visits

    1025

教学公告

crc校验上机实验
[作者: 曾德泽  发布时间:2015-06-05 19:46:04  浏览次数:471次]

crccyclical redundancy check) 循环冗余校验,在《计算机组成原理》里面有这个知识点。类似的校验有奇偶校验、校验和校验。

可以简单的理解成在发送数据后面加上这个验证码,判断前面数据是否正确。

接收方如何检查收到的信息有无错误(一个简单通俗的模型) 首先接收方和发送方约定一个“生成多项式”g(x);

生成多项式的选取是个很有难度的问题,如果选的不好,那么检出错误的概率就会低很多。好在这个问题已经被专家们研究了很长一段时间了,对于我们这些使用者来说,只要把现成的成果拿来用就行了。在本次课程上,我们写一个简单的程序来生成crc码,然后做验证。


模板:



#include

#include

#include

#include



typedef unsigned charuchar;

typedef unsigned shortushort;

typedef unsigned intuint;


/************************************************************************/

/* 产生crc16多项式(0x1021)的校验码(只能处理单个字节)

/************************************************************************/

void crc16_one_byte(const uchar data, ushort &crc)

{

}


/************************************************************************/

/* 产生crc32多项式(0x04c11db7)的校验码(只能处理单个字节)

/************************************************************************/

void crc32_one_byte(const uchar data, uint &crc )

{

}



/************************************************************************/

/* 产生crc16多项式(0x1021)的校验码(能处理多个字节)

/* crc32类似

/************************************************************************/

void crc16_multi_byte(const uchar data, ushort &crc)

{

}



/************************************************************************/

/* 得到发送的数据

/* 对应于crc16校验,crc32类似

/************************************************************************/

void getsenddata(const uchar data, char *senddata, ushort &crc16)

{

}


/************************************************************************/

/* 验证接收到的数据

/* 对应于crc16校验,crc32类似

/************************************************************************/

void checkout_data(char *senddata)

{

}


int main( void )

{

char senddata[10] = {0};

uchar data = 'a';

ushort crc16 = 0;

//得到crc16的校验码

crc16_one_byte(data, 8, crc16);

//拼接得到需要发送的数据

getsenddata(data, senddata, crc16);

//验证数据

checkout_data(senddata);


return 0;

}




相关课程

扫一扫二维码,快速加入本课程!

查看使用方法
网站地图