日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

计算机网络crc校验实验报告,CRC校验实现-实验报告(附主要实现代码)

發(fā)布時(shí)間:2025/4/5 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 计算机网络crc校验实验报告,CRC校验实现-实验报告(附主要实现代码) 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

計(jì)算機(jī)網(wǎng)絡(luò)

實(shí)驗(yàn)報(bào)告

班級:03計(jì)算機(jī)B班

實(shí)驗(yàn)名稱:CRC校驗(yàn)實(shí)現(xiàn)

姓名:kikikind

學(xué)號:086

指導(dǎo)老師:何懷文

日期:2006-4-22

1.學(xué)習(xí)CRC循環(huán)冗余檢驗(yàn)原理

2.掌握實(shí)現(xiàn)方法

WindowXp+sp2 , VC++ 6.0/MFC

三.實(shí)驗(yàn)任務(wù)

1.通過學(xué)習(xí)CRC原理,驗(yàn)證,檢錯(cuò),掌握其工作原理;

2.編寫CRC編碼程序;

3.總結(jié)實(shí)驗(yàn)過程,編寫提交實(shí)驗(yàn)報(bào)告:方案、編程、調(diào)試、結(jié)果、分析、結(jié)論。

四.CRC編程實(shí)現(xiàn)

1.程序設(shè)計(jì)

1.以圖型界面方式顯示,可選擇編碼方式

i.CRC16

ii.CRCCCIT

iii.CRC32

iv.自定義多項(xiàng)式

2.MFC實(shí)現(xiàn)

3.自定義編碼數(shù)據(jù)(十進(jìn)制方式)

4.顯示生成編碼與余數(shù)

5.檢驗(yàn)正確性

2.十進(jìn)制轉(zhuǎn)二進(jìn)制(以下是具體函數(shù))

具體算法:

//1.找不出大于轉(zhuǎn)換數(shù)的最大2^n

//2.轉(zhuǎn)換數(shù)減去2^n,再找不大于新的當(dāng)前數(shù)

//3.當(dāng)前數(shù)大于2^n時(shí)置1,小于時(shí)置0,同時(shí)2^n/2

void CCRC::DecToBinary( CString & ChangeString )

{

if ( ChangeString.IsEmpty())

return;

unsigned long num = atol(ChangeString.GetBuffer(ChangeString.GetLength()));

unsigned long temp = 1;

int k = 0;

//求出最大不超過當(dāng)前數(shù)的2次冪,設(shè)置字符串長度

while ( temp < num )

{k++; temp*=2; }

//設(shè)置字符串長度

ChangeString.GetBufferSetLength(k);

ChangeString.SetAt(0,'1');

temp /= 2;

num -= temp;

//num為當(dāng)前數(shù), temp保存不大于num的最大2^n數(shù),

k = 1;

while( num >= 0 && temp != 0)

{

//這句很重要,每設(shè)一位0 or 1 temp都要/2

temp /= 2;

//當(dāng)前數(shù)比2^n少時(shí),就置0

while( num < temp )

{

ChangeString.SetAt(k++,'0');

temp /= 2;

}

//如果減盡,即當(dāng)前數(shù)num=0的話,最后一位置0,其它情況時(shí)是num > temp所以置一

if ( num != 0)

ChangeString.SetAt(k++,'1');

num -= temp;

}

}

3.轉(zhuǎn)換編碼(以下是具體函數(shù))

//編碼

//strChange編碼的字符串strPoly生成多項(xiàng)式SaveRadius保存余數(shù)字符串

bool CCRC::CRC_Code(CString strChange, CString strPoly, CString & SaveRadius, bool isTest )

{//除數(shù),每次運(yùn)算的模2數(shù),余數(shù)

char * Buf;

int ChangeLen,PolyLen;

int StrPos, Pos, BufPos;

bool isLast = false;

ChangeLen = strChange.GetLength();

PolyLen = strPoly.GetLength();

//初始化各數(shù)組長度(保存多項(xiàng)式的二進(jìn)制字符串長度即為最高次數(shù),+1位是用來保存結(jié)束符)

Buf = new char[PolyLen+1];

//如果不是用于測試,是在多項(xiàng)式后尾添0

if ( !isTest )

{

strChange.GetBufferSetLength( ChangeLen + PolyLen);

StrPos= ChangeLen;

ChangeLen = ChangeLen + PolyLen - 1;

while ( StrPos < ChangeLen )

strChange.SetAt(StrPos++,'0');

strChange.SetAt(StrPos,'/0');

}

//進(jìn)行模2除

StrPos = PolyLen;

Pos = 0;

while( Pos < PolyLen )

{

Buf[Pos] = strChange.GetAt(Pos);

Pos++;

}

//從多項(xiàng)式長開始向右掃

while( StrPos <= ChangeLen )

{

Pos = 0;

isLast = false;

//單次多項(xiàng)式除

while ( Pos < PolyLen)

{

if ( Buf[Pos] == strPoly.GetAt(Pos) )

Buf[Pos++] = '0';

else

Buf[Pos++] = '1';

}

//調(diào)整buf,如不是最后一次,則將buf中從第一個(gè)不為0的數(shù)開始將數(shù)向前移

BufPos = 0;

Pos = 0;

//找出第一個(gè)不為1的字符,如果全為0,表示已除完

while ( Buf[BufPos++] != '1' && BufPos< PolyLen);BufPos--;

if ( StrPos == ChangeLen -1 && BufPos > 1)

{

BufPos = 2;

isLast = true;

}

//本身轉(zhuǎn)移

if ( BufPos > ( ChangeLen - StrPos ))

{

BufPos = ChangeLen - StrPos + 1;

isLast = true;

}

while( BufPos < PolyLen )

Buf[Pos++] = Buf[BufPos++];

//如果是最后一次就跳出去

if ( StrPos == ChangeLen )

break;

//填充從轉(zhuǎn)換串的新字符

while( Pos < PolyLen && StrPos < ChangeLen )

Buf[Pos++] = strChange.GetAt(StrPos++);

//控制最后一輪

if ( isLast )

break;

}

Buf[PolyLen-1] = '/0';

SaveRadius = CString(Buf);

delete [] Buf;

return ( atol(SaveRadius.GetBuffer(SaveRadius.GetLength())) == 0 );

}

4.檢查正確性

設(shè)置編碼函數(shù)最后一個(gè)參數(shù)isTest為TURE,則不會在轉(zhuǎn)換串后添0,重新計(jì)算一次,保存返回值,如果為0,則表示編碼成功!

五.附件

l附件有實(shí)現(xiàn)程序,可直接運(yùn)行

l可能存有不足,測試基本正常

l完整源程序

六.程序介紹

l采用計(jì)算法,以數(shù)組方式存放二進(jìn)制字符串模擬手工計(jì)算

l可自定義校檢多項(xiàng)式

l生成校檢碼檢查,驗(yàn)證生成式的正確性

(由于水平有限,可能程序仍然存在很多不足,請老師多多指教!如有任何問題或疑問可發(fā)郵件至郵箱:與我聯(lián)系,謝謝)

總結(jié)

以上是生活随笔為你收集整理的计算机网络crc校验实验报告,CRC校验实现-实验报告(附主要实现代码)的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。