原 乙太網幀FCS校驗碼CRC32的三種實現方法

2021-06-06 15:29:51 字數 772 閱讀 5052

提供了三種實現方法。

方法一:按位計算crc32校驗碼。

方法二:使用非翻轉的查詢表進行快速計算,按位元組計算crc32校驗碼。但計算過程中有位翻轉操作,計算速度慢。

方法三:使用翻轉的查詢表進行快速計算,按位元組計算crc校驗碼。速度極快。

#include #include #include #define alt_8    char

#define alt_u8 unsigned char

#define alt_32 int

#define alt_u32 unsigned int

#define alt_64 long long

#define alt_u64 unsigned long long

//位翻轉函式

alt_u64 reflect(alt_u64 ref,alt_u8 ch)

return value;

}//標準的crc32多項式

#define poly 0x04c11db7

//翻轉的crc32多項式

#define upoly 0xedb88320

alt_u32 crc32_bit(alt_u8 *ptr, alt_u32 len, alt_u32 gx)

{ alt_u8 i;

alt_u32 crc = 0xffffffff;

while( len-- )

{for( i = 1; i != 0; i <<= 1

乙太網幀格式

一 ethernet位址 為了標識乙太網上的每台主機,需要給每台主機上的網路介面卡 網路介面卡 分配乙個唯一的通訊位址,即ethernet位址或稱為網絡卡的實體地址 mac位址。ieee負責為網路介面卡製造廠商分配ethernet位址塊,各廠商為自己生產的每塊網路介面卡分配乙個唯一的ethernet...

乙太網幀格式

乙太網幀格式,即在乙太網幀頭 幀尾中用於實現乙太網功能的域。圖2 ieee802.3以太幀頭 欄位字段長度 位元組 目的前導碼 preamble 7同步 幀開始符 sfd 1標明下乙個位元組為目的mac欄位 目的mac位址 6指明幀的接受者 源mac位址 6指明幀的傳送者 長度 length 2幀的...

乙太網幀格式

乙太網幀格式,即在乙太網幀頭 幀尾中用於實現乙太網功能的域。圖2 ieee802.3以太幀頭 欄位字段長度 位元組 目的前導碼 preamble 7同步 幀開始符 sfd 1標明下乙個位元組為目的mac欄位 目的mac位址 6指明幀的接受者 源mac位址 6指明幀的傳送者 長度 length 2幀的...