📄 rsheader_public.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 + -