協議棧中使用crc校驗函式

2022-07-29 07:06:06 字數 1032 閱讀 5993

#include

intmain

();

//以乙個7個位元組的陣列舉例

inti=0

,j=0

,cc

=0xffff

;

for(i=

0;i<7;

i++)

else

}

}printf

("%d",cc

);//輸出10進製crc校驗值

printf

("\n"

);printf

("%x",cc

);//輸出16進製制的crc校驗值

這時會看到,資料顯示不正確,按照思路同樣的**,在c語言編譯中輸出的16進製制是f288,那麼在這裡輸出的應該是88 f2。(因為實際需求需要低位在前,高位在後)。

可以看到輸出結果沒問題了。為什麼會出現這種問題呢?int的資料範圍不是-65536到65536嗎?這是因為我們平常用c編譯器的時候用的記憶體時計算機的記憶體,可以讓很大的資料得以顯示。但是在iar中,我們用的cc2530的微控制器的晶元,它的記憶體時有限的,我所用的微控制器記憶體只有256kb,所以用int型顯示時會出現問題

CRC校驗與RARP協議

crc cyclic redundancy check 迴圈冗餘檢驗。crc校驗 廣泛應用於資料鏈路層的差錯檢驗技術,保證資料傳輸的可靠性。crc校驗原理 傳送端 傳送資料 m 101001 冗餘碼即幀檢驗序列 fcs 的獲得 1 在crc演算法中,除數有乙個專有名稱叫做生成多項式。多項式p x x...

ARP協議以及CRC校驗

網路中每個主機都有乙個唯一的實體地址 又稱為硬體位址 進行標識。tcp ip協議支援異構的物理網路連線,低層的差異由ip層遮蔽,即在ip層通過ip位址 由稱邏輯位址 實現對主機的統一標識。換言之,ip層通過ip位址來標識ip位址來標識主機,而網路介面層通過mac位址來標識主機。因此,mac位址與ip...

原始碼 Modbus協議中CRC16校驗

modbus的資料校驗方法 crc 16 迴圈冗餘錯誤校驗 crc 16錯誤校驗程式如下 報文 此處只涉及資料位,不指起始位 停止位和任選的奇偶校驗 位 被看作是乙個連續的二進位制,其最高有效位 msb 首選傳送。報文先與x 16相乘 左移16位 然後看x 16 x 15 x 2 1除x 16 x ...