⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 crc_table.cpp

📁 C 程序 球面方位角算法: azimuth.cpp CRC校验快速算法: CRC_Table.cpp 解扰码算法: scrambler.cpp Matlab 程序 信号带宽测量: Ba
💻 CPP
字号:
//生成多项式为r次的(N,k)循环码单项式监督码码表生成函数
//给出码表地址CRC_Tb、(N,r)值, CRC_Tb[r]必须赋值为生成式gx
//生成式的末r位二进制值gx表示: 如g(x)=x16+x12+x5+1 表示为:gx=0x1021;
 void CrcTable(int N, int r, unsigned short CRC_Tb[])
{
	int i=0;
	for(;i<r;i++)		CRC_Tb[i]=1<<i;
    for(i=r+1;i<N;i++)	
	{	CRC_Tb[i]=CRC_Tb[i-1]<<1;
		if(CRC_Tb[i-1]&(1<<r-1)) 
		{	CRC_Tb[i]^= CRC_Tb[r]; }
	}
}


//校验和——对给定序列dat计算CRC校验和:  按整字节(N)设计,不足整字节则高位补0: 从高至低为 0~N-1字节
unsigned short Crc(unsigned char *dat, int N)
{	int i, j;
	unsigned short b=0, CRC=0;
	unsigned char a,c;	
	for(i=0;i<N;i++) 
	{	 
		for(j=0;j<8;j++) 
		{	
			b=CRC_Tb[(N-i)*8-j-1];
			if((0x80>>j)&dat[i]	)						//对应位(i*8+j)比特是1时 a位与c大于0
			{  CRC^=(b<<8)^(b>>8); }
		}
	}
	return CRC;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -