#include
int
main()
;
//以乙個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 ...