我是靠谱客的博主 爱听歌烤鸡,最近开发中收集的这篇文章主要介绍【原】以太网帧FCS校验码CRC32的三种实现方法,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

提供了三种实现方法。

方法一:按位计算CRC32校验码。

方法二:使用非翻转的查找表进行快速计算,按字节计算CRC32校验码。但计算过程中有位翻转操作,计算速度慢。

方法三:使用翻转的查找表进行快速计算,按字节计算CRC校验码。速度极快。

 

#include <stdio.h>
#include <stdlib.h>
#include <io.h>




#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)
{	
	int i;
	alt_u64 value = 0;
	for( i = 1; i < ( ch + 1 ); i++ )
	{
		if( ref & 1 )
			value |= 1 << ( ch - i );
		ref >>= 1;
	}
	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 

最后

以上就是爱听歌烤鸡为你收集整理的【原】以太网帧FCS校验码CRC32的三种实现方法的全部内容,希望文章能够帮你解决【原】以太网帧FCS校验码CRC32的三种实现方法所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(70)

评论列表共有 0 条评论

立即
投稿
返回
顶部