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

📄 exange.cpp

📁 MFC小程序
💻 CPP
字号:
// Exange.cpp : implementation file
//

#include "stdafx.h"
#include "p09005435.h"
#include "Exange.h"
#include "math.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// Exange dialog


Exange::Exange(CWnd* pParent /*=NULL*/)
	: CDialog(Exange::IDD, pParent)
{
	//{{AFX_DATA_INIT(Exange)
		// NOTE: the ClassWizard will add member initialization here
	//}}AFX_DATA_INIT
}


void Exange::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(Exange)
		// NOTE: the ClassWizard will add DDX and DDV calls here
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(Exange, CDialog)
	//{{AFX_MSG_MAP(Exange)
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// Exange message handlers
int change2(char * p);
int change8(char * p);
int change10(char * p);
int change16(char * p);
void count(int data,int n,char * p);
void Add(int m,int n,char *p);


void Exange::OnOK() 
{
	int sign=0,data=0,n=0;
    char strg[40];
	char strgsign1[20],strgsign2[20];
	GetDlgItemText(IDC_ENTERJZ,strg,40); 
	GetDlgItemText(IDC_YUANJZ,strgsign1,20); 
	GetDlgItemText(IDC_MBJZ,strgsign2,20); 

    if(strcmp(strgsign1,"二进制")==0)
		data=change2(strg);
	else if(strcmp(strgsign1,"八进制")==0)
	    data=change8(strg);
	else if(strcmp(strgsign1,"十六进制")==0)
       	data=change16(strg);
 	else
		data=change10(strg);


    if(strcmp(strgsign2,"二进制")==0)
		count(data,'2',strg);
	else if(strcmp(strgsign2,"八进制")==0)
		count(data,'8',strg);
	else if(strcmp(strgsign2,"十六进制")==0)
		count(data,'g',strg);
	else
		_gcvt(data,10,strg);


	SetDlgItemText(IDC_PRINTJZ,strg);
}
////////////////////////////////////////////////////////////////////////////////////////////////
int change2(char * p)          	      //将二进制转换成十进制(由字符型转换成整形)。
{
	int l=0,data=0;
	l=strlen(p)-1;
	for(int i=0;i<=l;i++)
	{
		if(*(p+i)=='1')
			data+=pow(2,(l-i));
		else if(*(p+i)!='0')
			AfxMessageBox("输入错误");
	}
	return data;
}

int change8(char * p)                //将八进制转换成十进制(由字符型转换成整形)。
{
	int l=0,data=0;
	l=strlen(p)-1;
	for(int i=0;i<=l;i++)
	{     
     switch(*(p+i))
	   {
	      case '1':data+=1*pow(8,(l-i));
	            break;
	      case '2':data+=2*pow(8,(l-i));
	            break;
	      case '3':data+=3*pow(8,(l-i));
	            break;
	      case '4':data+=4*pow(8,(l-i));
	            break;
	      case '5':data+=5*pow(8,(l-i));
	            break;
	      case '6':data+=6*pow(8,(l-i));
	            break;
	      case '7':data+=7*pow(8,(l-i));
	            break;
	      case '0': break;
          default:
			    AfxMessageBox("输入错误");
				break;
	   }
	}
	return data;
}

int change10(char * p)                 //将十进制转换成十进制(由字符型转换成整形)。
{
	int l=0,data=0;
	l=strlen(p)-1;
	for(int i=0;i<=l;i++)
	{     
     switch(*(p+i))
	   {
	      case '1':data+=1*pow(10,(l-i));
	            break;
	      case '2':data+=2*pow(10,(l-i));
	            break;
	      case '3':data+=3*pow(10,(l-i));
	            break;
	      case '4':data+=4*pow(10,(l-i));
	            break;
	      case '5':data+=5*pow(10,(l-i));
	            break;
	      case '6':data+=6*pow(10,(l-i));
	            break;
	      case '7':data+=7*pow(10,(l-i));
	            break;
	      case '8':data+=8*pow(10,(l-i));
	            break;
	      case '9':data+=9*pow(10,(l-i));
	            break;
	      case '0': break;
          default:
			    AfxMessageBox("输入错误");
				break;
	   }
	}
	return data;
}

int change16(char * p)                 //将十六进制转换成十进制(由字符型转换成整形)。
{
	int l=0,data=0;
	l=strlen(p)-1;
	for(int i=0;i<=l;i++)
	{
       switch (*(p+i))
	   {
	   case '1':data+=1*pow(16,(l-i));
	            break;
	   case '2':data+=2*pow(16,(l-i));
	            break;
	   case '3':data+=3*pow(16,(l-i));	  
	            break;
	   case '4':data+=4*pow(16,(l-i));
	            break;
	   case '5':data+=5*pow(16,(l-i));
	            break;
	   case '6':data+=6*pow(16,(l-i));
	            break;
	   case '7':data+=7*pow(16,(l-i));
	            break;
    	case '8':data+=8*pow(16,(l-i));
	            break;
    	case '9':data+=9*pow(16,(l-i));
	            break;
		case 'a':data+=10*pow(16,(l-i));
	            break;
		case 'b':data+=11*pow(16,(l-i));
	            break;
		case 'c':data+=12*pow(16,(l-i));
	            break;
		case 'd':data+=13*pow(16,(l-i));
	            break;
		case 'e':data+=14*pow(16,(l-i));
	            break;
		case 'f':data+=15*pow(16,(l-i));
	            break;
	   case '0': break;
       default:
			AfxMessageBox("输入错误");
			break;

	   }
	}
	return data;
}



///////////////////////////////////////////////////////////////////////////////////////////////
void count(int data, int n,char *p)      // 输入以个n,便可将data转换成n进制
{
	for(int i=0;i<40;i++)
	{
		p[i]=0;
	}
	for(i=0;i<data;i++)
	{
		Add(39,n,p);
	}
	for(i=0;i<40;i++)
	{
		if(p[i]!='\0')
		{
			n=i;
	    	break;
		}
	}
	for(i;i<40;i++)
	{
		p[i-n]=p[i];
		p[i]='\0';
	}
}

void Add(int m,int n,char *p)
{
	char a=n;
	if(*(p+m)==0)
		*(p+m)='0';
	if(((*(p+m)+1)<a)&&(*(p+m)!='9'))
    	*(p+m)+=1;
	else if(*(p+m)=='9')
		*(p+m)='a';
	else 
	{
		*(p+m)='0';
		Add(m-1,n,p);
	}
}
	    

⌨️ 快捷键说明

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