encode.c

来自「程序由C写成,在VC环境中实现,主要描述了数字电视地面广播标准中BCH(762,」· C语言 代码 · 共 155 行

C
155
字号
//Head files
//-----------------------------------------------------------------
#include "stdio.h"                        
#include "math.h"                         
#include "stdlib.h"                       
#include "time.h"                         
#include "encode.h"						  
//-----------------------------------------------------------------


//产生随机数
void RandData(int FrameLength)
{  
	int i, j;
	for (i =0; i<DATA_LENGTH; i++)
	{
		j = rand()%2;
		if (i <INFOR_DATA_LENGTH)
		{
			if (j ==0)
				CodesTemp[i] = Codes[i] = 0;
			else
				CodesTemp[i] = Codes[i] = 1;
		}
		else
		{
			Codes[i] = 0;
		}
	}

}

//产生已知数
void KnownData(void)
{
	int i;
	for (i =0; i<DATA_LENGTH; i++)
	{
		if (i <INFOR_DATA_LENGTH)
		{
			if (i%2 == 0)
				CodesTemp[i] = Codes[i] = 1;
			else
				CodesTemp[i] = Codes[i] = 0;
		}
		else
		{
			Codes[i] = 0;
		}
	}
	
}


//BCH编码
void BchEncode (void)
{
	int Garray[CHECK_DATA_LENGTH+1];
	int i, j;

	for (i =0; i<(CHECK_DATA_LENGTH+1); i++) 
	{
		if ((i == 0) || (i == 7) || (i == 10))	//10000001001
			Garray[i] = 1; 
		else
			Garray[i] = 0;	
	}

	for (i =0; i<INFOR_DATA_LENGTH; i++)
	{
		if (Codes[i] == 1)
		{
			for (j =0; j<(CHECK_DATA_LENGTH+1); j++) 
			{
				Codes[i+j] = (Codes[i+j]+Garray[j])%2;
			}
		}
	}

	for (i =0; i<INFOR_DATA_LENGTH; i++)
	{
		Codes[i] = CodesTemp[i];
	}

}





































































⌨️ 快捷键说明

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