您申请加入课程:Computer  Networks  B
需要验证您的身份,请输入请求信息:
您的学号:
班级选择:
附注信息:
  • 创建者

    Creator

    曾德泽
  • 活跃度

    Activeness

  • 访问量

    Visits

    1587

教学公告

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

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

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

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

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


模板:



#include

#include

#include

#include



typedef unsigned char uchar;

typedef unsigned short ushort;

typedef unsigned int uint;


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

/* 产生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;

}




相关课程

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

放大二维码 查看使用方法
关闭