while(len--!=0)
在奉賢等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、做網(wǎng)站 網(wǎng)站設(shè)計(jì)制作按需策劃設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站制作,全網(wǎng)營(yíng)銷推廣,外貿(mào)網(wǎng)站制作,奉賢網(wǎng)站建設(shè)費(fèi)用合理。
這句的len的值循環(huán)一次就減少1,先執(zhí)行l(wèi)en!=0,再執(zhí)行腔衫len--。
當(dāng)len為0時(shí)退出循環(huán)前圓鋒。
for(i=0x80;
i!=0;
i/=2)
0x80是十慧晌六進(jìn)制數(shù),也即128
當(dāng)i!=0時(shí),執(zhí)行循環(huán)體,
然后i=i/2,即i值減半。
unsigned short crc_dsp(unsigned short reg, unsigned char data_crc)
//reg為crc寄迅巖存器, data_crc為將要處理的猜鍵8bit數(shù)據(jù)流
{
unsigned short msb; //crc寄存器將移出的最高1bit
unsigned short data;
unsigned short gx = 0x8005, i = 0; //i為左移畝兆御次數(shù), gx為生成多項(xiàng)式
data = (unsigned short)data_crc;
data = data 8;
reg = reg ^ data;
do
{
msb = reg 0x8000;
reg = reg 1;
if(msb == 0x8000)
{
reg = reg ^ gx;
}
i++;
}
while(i 8);
return (reg);
}
把我知道的說(shuō)一下:
碼流后面加8個(gè)0可以用移位得到(碼流8;)
單次異桐消或運(yùn)算可以用運(yùn)算符:^(運(yùn)算符兩邊為常數(shù))
由于你校驗(yàn)的是5個(gè)字節(jié),且要多次異或運(yùn)算,所以得借助數(shù)組,或其它的數(shù)據(jù)結(jié)果才能完成局返。
最后問一下你是做硬局臘知件的嗎
下面我們以CRC-16為例來(lái)說(shuō)明任意長(zhǎng)度數(shù)據(jù)流的CRC校驗(yàn)碼生成過程。我們采用將數(shù)據(jù)流分成若干個(gè)8bit字符,并由低字節(jié)到高字絕塌節(jié)傳送的并行方法來(lái)求CRC校驗(yàn)碼。具體計(jì)算過程為:用一個(gè)16bit的寄存器來(lái)存放CRC校驗(yàn)值,且設(shè)定其初值為0x0000;將數(shù)據(jù)流的第一個(gè)8bit與16bit的CRC寄存器的高字節(jié)相異或,并將結(jié)果存入CRC寄存器高字節(jié);CRC寄存器左移一位,最低1bit補(bǔ)零,同時(shí)檢查移出的最高1bit,若移出的最高1bit為0,則繼續(xù)按上述過程左移,若最高1bit為1,則將CRC寄存器中的值與生成多項(xiàng)式碼相異或,結(jié)果存入CRC寄存器值;繼續(xù)左移并重復(fù)上述處理方法,直到將8bit數(shù)據(jù)處理完為止,則此時(shí)CRC寄存器中的值就是第一個(gè)8bit數(shù)據(jù)對(duì)應(yīng)的CRC校驗(yàn)碼;然后將此時(shí)CRC寄存器的值作為初值,用同樣的處理方法重復(fù)上述步驟來(lái)處理下一個(gè)8bit數(shù)據(jù)流,直到將所有的8bit字符都處理完后,此刻CRC寄存器中的值即為整個(gè)數(shù)據(jù)流對(duì)應(yīng)的CRC校驗(yàn)碼。
下面示出了其計(jì)算過程的流程圖:
在用C語(yǔ)言編寫CRC校驗(yàn)碼的實(shí)現(xiàn)程序時(shí)我們應(yīng)該注意,生成多項(xiàng)式 對(duì)應(yīng)的十六進(jìn)制數(shù)為0x18005,由于CRC寄存器左移過程中,移出的最高位為1時(shí)與 相異或,所以與16bit的CRC寄存器對(duì)應(yīng)并塌圓的生成多項(xiàng)式的十六進(jìn)制數(shù)可用0x8005表示。下面給出并行處理8bit數(shù)據(jù)流的C源程序:
unsigned short crc_dsp(unsigned short reg, unsigned char data_crc)
//reg為crc寄存器, data_crc為將要處理的8bit數(shù)據(jù)流
{
unsigned short msb; //crc寄存器將移出的最高1bit
unsigned short data;
unsigned short gx = 0x8005, i = 0; //i為左移次數(shù), gx為生成多項(xiàng)式
data = (unsigned short)data_crc;
data = data 8;
reg = reg ^ data;
do
{
msb = reg 0x8000;
reg = reg 1;
if(msb == 0x8000)
{
reg = reg ^ gx;
}
i++;
}
while(i 8);
return (reg);
}
以上為處理每一個(gè)8bit數(shù)據(jù)流的子程序,在計(jì)衫扮算整個(gè)數(shù)據(jù)流的CRC校驗(yàn)碼時(shí),我們只需將CRC_reg的初值置為0x0000,求第一個(gè)8bit的CRC值,之后,即可將上次求得的CRC值和本次將要處理的8bit數(shù)據(jù)作為函數(shù)實(shí)參傳遞給上述子程序的形參進(jìn)行處理即可,最終返回的reg值便是我們所想得到的整個(gè)數(shù)據(jù)流的CRC校驗(yàn)值。
名稱欄目:Crc校驗(yàn)函數(shù)c語(yǔ)言 crc校驗(yàn)碼c語(yǔ)言
文章路徑:http://jinyejixie.com/article10/ddpgddo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、手機(jī)網(wǎng)站建設(shè)、定制開發(fā)、外貿(mào)網(wǎng)站建設(shè)、服務(wù)器托管、動(dòng)態(tài)網(wǎng)站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)