資源簡介
效驗(yàn)和(checksum)
? 原理:把要發(fā)送的數(shù)據(jù)看成二進(jìn)制整數(shù)序列,并計(jì)算他們的和。若數(shù)據(jù)字節(jié)長度為奇數(shù),則在數(shù)據(jù)尾部補(bǔ)一個(gè)字節(jié)的0以湊成偶數(shù)。
? 例子:16位效驗(yàn)和計(jì)算,下圖表明一個(gè)小的字符串的16位效驗(yàn)和的計(jì)算。為了計(jì)算效驗(yàn)和,發(fā)送計(jì)算機(jī)把每對字符當(dāng)成16位整數(shù)處理并計(jì)算效驗(yàn)和。如果效驗(yàn)和大于16位,那么把進(jìn)位(carry)一起加到最后的效驗(yàn)和中。
H e l l o w o r l d .
4865 6C6C 6F20 776F 726C 642E
4865+6C6C+6F20+776F+726C+642E+carry=71FC
代碼片段和文件信息
/*?Note:Your?choice?is?C?IDE?*/
/**************************************/
/*????????????廣州大學(xué)????????????????*/
/*??????????05軟件工程1班?????????????*/
/*??????????captain_black?????????????*/
/*????????????????????????????????????*/
/*???????????2008.10.6????????????????*/
/**************************************/
//
#include?“stdio.h“
int?main(int?argc?char*?argv[])
{
unsigned?int?fdata=0c=0H=0L=0;
unsigned?int?sum=0;
unsigned?int?carry=0;
FILE?*fp;
if(argv[1]==‘\0‘)?{printf(“缺少文件名請輸入要檢驗(yàn)的文件名!“);return?0;}
printf(“\n---------------------------------------------\n“);
if((fp=fopen(argv[1]/*運(yùn)行參數(shù)*/“r+“))==NUL
評論
共有 條評論