c語言程式問題
1樓:
u8buf:是等待校驗的資料。
crctable:是校驗表。
位異或,比|優先。
位或,。crc = ((crc <<4) |u8buf[i] >4)) crctable[crc >>12]
u8buf[i]前4位與crctable中crc 前4位對應的校驗值位異或,結果是後4位,crc左移4位,後4位空了(0),位或後,前一步計算的4位併入了crc後4位。
crc = ((crc <<4) |u8buf[i] &0xf)) crctable[crc >>12];
u8buf[i]後4位與crctable中crc 前4位對應的校驗值位異或,結果是後4位,crc左移4位,後4位空了(0),位或後,前一步計算的4位併入了crc後4位。
現在,crc中後8位是u8buf[i]對應的校驗碼。crc是累積變化的。下乙個i,會把這8位數移到crc的高8位,後面是下乙個數對應的8位。
前面的4位又影響後面crctable的選擇。相當於乙個密碼計算。u8buf[i]中修改1位,最後的crc都不同。
哪位高手有用c++語言編寫的crc8校驗的程式
2樓:一鳥似玄帥衣
不知道你說的crc是不是網路上戚燃的crc,網路上的crc原理是商定乙個除數,然後將傳送資料除虧亮以除數的餘數作為crc校驗碼一起傳送,最後接收到的資料也除以這個除數,如果沒有錯誤除的結果為0,但是這個校驗機制是不能判斷出原傳送碼中**出高空虛錯的。
c語言實現crc8校驗
3樓:
不知道你說的crc是不是網路上的crc,網路上的crc原理是商定乙個除數,然後將傳送資料除以除數的餘數作為crc校驗碼一起傳送,最後接收到的資料也除以這個除數,如果沒有錯誤除的結果為0,但是這個校驗機制是不能判斷出原傳送碼中**出錯的。
微控制器c語言程式分析
4樓:網友
uint8_t *ptr uint8_t len 這是傳入引數。 len可能是長度,ptr可能指向的是乙個陣列。
按位異或後賦值。
crc ^=ptr++;首先將陣列第一位異或後複製給crc。之後ptr再向前一步,簡單理解就是指向陣列的下一位。
for(i = 0;i < 8;i++)
將取到陣列第一位值,與0x01上。如果非零,crc就需要右移一位,再與0x8c異或。否則右移1位。每位陣列值要做8次。
while(len--)表示要判斷陣列內len個值。或則說是取得陣列內len長度的元素個數。
return crc; /len個陣列值都作完以後,將crc返回。
我想你需要了解一下 0x01的意義,0x8c的意義。
0x01 = 0000 0001
0x8c = 1000 1100
沒看到啊,已經有人答完了。哎,早知道就不寫這麼多字了。
5樓:赤膊蘋果
1、輸入資料起始位址:*ptr,資料長度 len2、最好加ptr是否是null的判斷。如果是null,直接放回0crc = 0;//先初始化好crc
while(len--)以位元組為單位對資料做crc處理,具體方法如下:
return crc;//返回結果。
crc演算法 誰給我個例子讓我練練手 有關crc的迴圈冗餘碼的 例題 要 有詳解的 謝謝
6樓:迷霧心魔
crc8查表法。
描 述: crc8校驗子程式 x^8+x^5+x^4+x^0入口引數: 指向陣列指標,校驗位元組個數。
出口引數: 8位crc校驗碼。
uint8 crc8table=;//256b/**計算crc校驗。
uint8 crc8_table(uint8 *p, uint8 counter)
return(crc8);}
貨物空運的有關程式?急求!!!!!
做暫時進出口 就是找同一家貨代公司來辦理,先辦理進口,然後用完之後再做退運處理。專業貨代,報關商檢什麼手續的都可解決,加你為好友了,打 或者q我 深圳東捷運通國際貨運 來自香港的空運專家,你搜空運就出來了,品牌實力,信譽保證,我們北京有倉庫,有需求聯絡。你做的這種方法是暫時進出口,是要海關繳納保證金...
有關鹽的化學方程式
請具體一點 不然太多了。1 酸 鹽 新酸 新鹽。反應物中酸必須是可溶的,生成物中至少有一種物質是氣體或沉澱或水等弱電解質。如 2hcl caco3 cacl2 h2co3 3h2o co2 bacl2 h2so4 baso4 2hcl 2 酸 鹼 鹽 水。反應物中至少有一種是可溶的。如 h2so4 ...
8x5 5x8的簡便計算,5x8和8x5用到的乘法口訣是
這個題誤區就是用40 40,我們可以用 8 8 5 5 64 8x8 5 5 64x1 64 8 5 5 8 40 40 1 5x8和8x5用到的乘法口訣是 用的乘法口訣是 五八得四十。5x8用這口訣,8x5也用這口訣。五八四十,一般前小後大 乘法交換定律a b b a 5x8和8x5計算時口訣相同...