vit2en.c

来自「此源码为在DSP上实现的卷积纠错编解码算法」· C语言 代码 · 共 93 行

C
93
字号
#include"vit.h"
unsigned int partab[256] = {
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
 0, 1, 1, 0, 1, 0, 0, 1,
 0, 1, 1, 0, 1, 0, 0, 1,
 1, 0, 0, 1, 0, 1, 1, 0,
};/*异或表*/
/*以下是编码程序*/
void vit2en(unsigned int *in,unsigned int *en)
{
 int i,j;
 int n,g0,g1,encstate;
 
 encstate=0;
 for(j=0;j<N1;j++)
 {  
    *(en+2*j)=0;
    *(en+2*j+1)=0;
    n=15;
    for(i=7;i>=0;i--)
    {
      encstate=(encstate<<1)|((*(in+j)>>i)&1);
      
      g0=partab[encstate  & POLYA];
      
      g1=partab[encstate & POLYB];
	  
	  if (n>7)
	  {
	    *(en+2*j)=*(en+2*j)|(g0<<(n-8));
        n--;
       
        *(en+2*j)=*(en+2*j)|(g1<<(n-8));
        n--;
        
        }
       else
        {
         *(en+2*j+1)=*(en+2*j+1)|(g0<<(n));
         n--;
        
         *(en+2*j+1)=*(en+2*j+1)|(g1<<(n));
         n--;
	     }
	   }
   }  
     *(en+2*N1)=0;
     n=15;
     /*加尾*/
     for(i=0;i<2;i++)
    {        
      encstate=encstate<<1;
      g0=partab[encstate  &POLYA];
      
      g1=partab[encstate & POLYB];
      *(en+2*N1)|=(g0<<(n-8));
      n--;
      *(en+2*N1)|=(g1<<(n-8));
      n--;
     }   
     
     *(en+2*N1+1)=0;
}  

⌨️ 快捷键说明

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