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