最新免费av在线观看,亚洲综合一区成人在线,中文字幕精品无码一区二区三区,中文人妻av高清一区二区,中文字幕乱偷无码av先锋

登錄 免費(fèi)注冊 首頁 | 行業(yè)黑名單 | 幫助
維庫電子市場網(wǎng)
技術(shù)交流 | 電路欣賞 | 工控天地 | 數(shù)字廣電 | 通信技術(shù) | 電源技術(shù) | 測控之家 | EMC技術(shù) | ARM技術(shù) | EDA技術(shù) | PCB技術(shù) | 嵌入式系統(tǒng)
驅(qū)動(dòng)編程 | 集成電路 | 器件替換 | 模擬技術(shù) | 新手園地 | 單 片 機(jī) | DSP技術(shù) | MCU技術(shù) | IC 設(shè)計(jì) | IC 產(chǎn)業(yè) | CAN-bus/DeviceNe

CRC問題請教高人

作者:williamt 欄目:ARM技術(shù)
CRC問題請教高人
在Zlg_IP軟件包/tcpip/crc目錄內(nèi)提供了計(jì)算CRC校驗(yàn)和的程序:


/******************************************************************
**函數(shù)原型:        unsigned int CHECKSUM(unsigned int xdata *check,unsigned int length)
**入口參數(shù):?check    :    被校驗(yàn)數(shù)據(jù)起始地址
                length    :    被校驗(yàn)數(shù)據(jù)長度,單位字
**出口參數(shù):        無
**返 回 值:        ~((sum)&0xffff))               
**說    明:        計(jì)算校驗(yàn)和
*******************************************************************/
//===================================================================
unsigned int CHECKSUM(unsigned int xdata *check,unsigned int length)
{
unsigned LONG sum=0;
unsigned int i;
for (i=0;i<(length)/2;i++)
    {
    sum += *check++;
    }
if(length&0x01)//長度為奇數(shù)個(gè)時(shí),要進(jìn)行該操作
    {
    sum = sum + ((*check)&0xff00);
    }
sum = (sum&0xffff) + ((sum>>16)&0xffff);//高16位和低16位相加
if(sum & 0xffff0000)
    {//表示有進(jìn)位
    sum++;
    }
return ( (unsigned int)(~((sum)&0xffff))  );
}

請教高手幾個(gè)問題:
1  語句:for (i=0;i<(length)/2;i++)只對數(shù)組的前半部分求和,為什么后半部分不用?
2  一般在計(jì)算CRC時(shí),都要用到crc_tab[]數(shù)組,為什么此地不用?


2樓: >>參與討論
yzb1658
你對程序的理解錯(cuò)誤
這里是對TCP或UDP包的校驗(yàn),不是IP的CRC校驗(yàn),去長度的一半,原因是這里需要雙SHORT為累加單位,在TCP的算法有明確的規(guī)定。
crc的table的生成有兩種方法,一種是直接給出數(shù)組,還有一種是運(yùn)算得到數(shù)組
QQ:421388916

參與討論
昵稱:
討論內(nèi)容:
 
 
相關(guān)帖子
急!那位能推薦一款大容量(》512K)串行FLASH芯片(5V供電)
ADS有沒有生成hex文件的阿?
Philips ARM初學(xué)者祝所有網(wǎng)友節(jié)日快樂!
請教周工:smartarm2200的問題
EasyJtag能調(diào)試LPC2146嗎?
免費(fèi)注冊為維庫電子開發(fā)網(wǎng)會(huì)員,參與電子工程師社區(qū)討論,點(diǎn)此進(jìn)入


Copyright © 1998-2006 udpf.com.cn 浙ICP證030469號(hào)