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

📄 rsheader_public.h

📁 (31,25)RS码编码以及解码的C程序
💻 H
字号:

#ifndef RS_HEADER_HAHA
#define RS_HEADER_HAHA

int T[31]={1,2,4,8,16,5,10,20,13,26,17,7,14,28,29,31,27,19,3,6,12,24,21,15,30,25,23,11,22,9,18};
int temp_de2bi[5]; /*use the global variance to save the return value.*/
int temp_Bencode[25]; /*before encode.*/
int temp_Aencode[31]; /*after encode*/
int temp_Bdecode[31];
int temp_Adecode[25];
int G[7]={21,24,16,24,9,10,0}; /*the generator polynomial*/

int find(int [], int y, int);
int rs_add(int ,int);
int rs_mul(int ,int);
int find(int [], int ,int);
int bi2de(int [],int);
void de2bi(int);
void mod(int [],int ,int);
void assignValue(int [],int [],int);
void assignValueInt(int [],int ,int);

int find(int x[], int y, int array_size)
{
	int i;
	for(i=0;i<array_size;i++)
	{
		if(x[i] == y)
		{
			return (i+1);
		}
	}
	return -1;
}

void circshift(int x[], int array_size, int shift) /* shift>0 ;rigth shift*/
{
	int i,temp[7];  /* 7 is the 'array_size' */
	shift=shift%array_size;
	if(shift==0)
		return;

	assignValue(temp,x,array_size);
	for(i=0;i<array_size;i++)
	{
		if(shift+i>array_size-1)
		{
			x[shift+i-array_size]=temp[i];
		}
		else
		{
			x[shift+i]=temp[i];
		}
	}
}


int bi2de(int x[],int array_size)
{
	int i;
	int b=0;
	for(i=0;i<array_size;i++)
	{
		b=b+x[i]*(int)pow(2,i);
	}
	return b;
}

void mod(int x[],int array_size,int num)
{
	int i;
	for(i=0;i<array_size;i++)
	{
		x[i]=x[i]%num;     
	}
}

void de2bi(int x) //combine with the globe variance 'temp_de2bi[5]'
{
	int i=0,j;
	while(x>0)
	{
		temp_de2bi[i]=x%2;
		x=x/2;
		i++;
	}
	if (i<5) 
	{
		for(j=0;j<5-i;j++)
		{
			temp_de2bi[i+j]=0;
		}
	}
}

int rs_add(int x, int y)
{
	int i;
	int temp[5];
	int temp_add[5];
	de2bi(x);
	assignValue(temp, temp_de2bi, 5);
	de2bi(y);
	for(i=0;i<5;i++)
	{
		temp_add[i]=temp[i]+temp_de2bi[i];
	}
	mod(temp_add,5,2);
	return bi2de(temp_add, 5);
}

int rs_mul(int x, int y)
{
	int x1,y1,c;
	if(x*y == 0)
		return 0;
	else
	{
		x1=find(T,x,31)-1;
		y1=find(T,y,31)-1;
		c=(x1+y1)%31;
		return T[c];
	}
}

void assignValue(int x[],int y[],int array_size)
{
	int i;
	for (i=0;i<array_size;i++)
	{
		x[i]=y[i];
	}
}

void assignValueInt(int x[],int y,int array_size)
{
	int i;
	for(i=0;i<array_size;i++)
	{
		x[i] = y;
	}
}

#endif

⌨️ 快捷键说明

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