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

📄 jidia2dlg.cpp

📁 2/3前向纠错编码FEC,用VC++写成,(通信新技术及其实验
💻 CPP
📖 第 1 页 / 共 2 页
字号:
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

void CJidia2Dlg::OnChangeDisplay2() 
{
UpdateData(true);	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

void CJidia2Dlg::OnChangeDisplay3() 
{
UpdateData(true);
	// TODO: If this is a RICHEDIT control, the control will not
	// send this notification unless you override the CDialog::OnInitDialog()
	// function and call CRichEditCtrl().SetEventMask()
	// with the ENM_CHANGE flag ORed into the mask.
	
	// TODO: Add your control notification handler code here
	
}

void CJidia2Dlg::jisuanstr()//16进制变换成2进制
{

switch(m_display1.GetAt(0))
{case'0':
		strin2="00";break;
	case'1':
		strin2="01";break;
	case'2':
		strin2="10";break;
    case'3':
		strin2="11";break;

	default:
	strin2="00";break;
}

		switch(m_display1.GetAt(1))
	{
	case'0':
		strin1="0000";break;
	case'1':
		strin1="0001";break;
	case'2':
		strin1="0010";break;
    case'3':
		strin1="0011";break;
	case'4':
		strin1="0100";break;
	case'5':
		strin1="0101";break;

	case'6':
		strin1="0110";break;
	case'7':
		strin1="0111";break;
	case'8':
		strin1="1000";break;

	case'9':
		strin1="1001";break;
	case 'a':
	case'A':
		strin1="1010";break;
	case'b':
	case'B':
		strin1="1011";break;
    case'c':
    case'C':
		strin1="1100";break;
	case'd':
    case'D':
		strin1="1101";break;
	case'e':
    case'E':
		strin1="1110";break;
    case'f':
    case'F':
		strin1="1111";break;
	default: 
		strin1="0000";break;
	}
	switch(m_display1.GetAt(2))
	{
	case'0':
		strin0="0000";break;
	case'1':
		strin0="0001";break;
	case'2':
		strin0="0010";break;
    case'3':
		strin0="0011";break;
	case'4':
		strin0="0100";break;
	case'5':
		strin0="0101";break;

	case'6':
		strin0="0110";break;
	case'7':
		strin0="0111";break;
	case'8':
		strin0="1000";break;

	case'9':
		strin0="1001";break;
	case'a':
	case'A':
		strin0="1010";break;
	case'b':
	case'B':
		strin0="1011";break;
    case'c':
    case'C':
		strin0="1100";break;
	case'd':
    case'D':
		strin0="1101";break;
	case'e':
    case'E':
		strin0="1110";break;
    case'f':
    case'F':
		strin0="1111";break;
	default: 
		strin0="0000";break;
	}
	str=strin2+strin1+strin0;

}

void CJidia2Dlg::jisuanm_display2()//计算5位校验位
{
////将二进制字符串变换成整形
if(str.GetAt(9)=='0')
  a[9]=0;
if(str.GetAt(9)=='1') 
a[9]=1;
if(str.GetAt(8)=='0')
  a[8]=0;
if(str.GetAt(8)=='1') 
a[8]=1;

if(str.GetAt(7)=='0')
  a[7]=0;
if(str.GetAt(7)=='1') 
a[7]=1;
if(str.GetAt(6)=='0')
  a[6]=0;
if(str.GetAt(6)=='1') 
a[6]=1;
if(str.GetAt(5)=='0')
  a[5]=0;
if(str.GetAt(5)=='1') 
a[5]=1;
if(str.GetAt(4)=='0')
  a[4]=0;
if(str.GetAt(4)=='1') 
a[4]=1;
if(str.GetAt(3)=='0')
  a[3]=0;
if(str.GetAt(3)=='1') 
a[3]=1;
if(str.GetAt(2)=='0')
  a[2]=0;
if(str.GetAt(2)=='1') 
a[2]=1;
if(str.GetAt(1)=='0')
  a[1]=0;
if(str.GetAt(1)=='1') 
a[1]=1;
if(str.GetAt(0)=='0')
  a[0]=0;
if(str.GetAt(0)=='1') 
a[0]=1;
 d0=0;d1=0;d2=0;d3=0;d4=0;d5=0;
///////////
 //十次输入后得到5个校验位

 d5=(a[9]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[8]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[7]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[6]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[5]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[4]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[3]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[2]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[1]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;

d5=(a[0]+d4)%2;
 prd1=d1;
 prd2=d3;
 d1=d0;
 d3=d2;
 d0=d5;
 d2=(d0+prd1)%2;
 d4=(prd2+d0)%2;


//将整形变换成字符型
if(d0==0)
s0='0';else s0='1';
if(d1==0)
s1='0';else s1='1';
if(d2==0)
s2='0';else s2='1';
if(d3==0)
s3='0';else s3='1';
if(d4==0)
s4='0';else s4='1';

s=s0+s1+s2+s3+s4;
}

void CJidia2Dlg::jiama()//解码
{///////////最高二位二进制变成16进制的最高位
if(sjiama.GetAt(0)=='0'&&sjiama.GetAt(1)=='0')
sjiama1='0';
if(sjiama.GetAt(0)=='0'&&sjiama.GetAt(1)=='1')
sjiama1='1';
if(sjiama.GetAt(0)=='1'&&sjiama.GetAt(1)=='0')
sjiama1='2';
if(sjiama.GetAt(0)=='1'&&sjiama.GetAt(1)=='1')
sjiama1='0';
/////////////3到6位二进制变成16进制的中间位

if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='0')
sjiama2='0';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='1')
sjiama2='1';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='0')
sjiama2='2';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='1')
sjiama2='3';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='0')
sjiama2='4';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='1')
sjiama2='5';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='0')
sjiama2='6';
if(sjiama.GetAt(2)=='0'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='1')
sjiama2='7';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='0')
sjiama2='8';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='1')
sjiama2='9';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='0')
sjiama2='A';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='0'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='1')
sjiama2='B';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='0')
sjiama2='C';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='0'&&sjiama.GetAt(5)=='1')
sjiama2='D';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='0')
sjiama2='E';
if(sjiama.GetAt(2)=='1'&&sjiama.GetAt(3)=='1'&&sjiama.GetAt(4)=='1'&&sjiama.GetAt(5)=='1')
sjiama2='F';
/////////////7到10位二进制变成16进制低位

if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='0')
sjiama3='0';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='1')
sjiama3='1';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='0')
sjiama3='2';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='1')
sjiama3='3';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='0')
sjiama3='4';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='1')
sjiama3='5';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='0')
sjiama3='6';
if(sjiama.GetAt(6)=='0'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='1')
sjiama3='7';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='0')
sjiama3='8';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='1')
sjiama3='9';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='0')
sjiama3='A';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='0'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='1')
sjiama3='B';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='0')
sjiama3='C';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='0'&&sjiama.GetAt(9)=='1')
sjiama3='D';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='0')
sjiama3='E';
if(sjiama.GetAt(6)=='1'&&sjiama.GetAt(7)=='1'&&sjiama.GetAt(8)=='1'&&sjiama.GetAt(9)=='1')
sjiama3='F';
////////////////最后得到解码的值
sjiama0=sjiama1+sjiama2+sjiama3;
}

⌨️ 快捷键说明

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