转换(VC)
我想在一个编辑框里输入一个十进制数,然后在另一个编辑框里输出十六进制(大写的,如“XXH”),能提供一下代码吗?谢谢! 代码而已嘛,简单……不过你看得懂才好://变换进制
void CcalculatorDlg::OnCheck_System_Radio(UINT Check)
{
m_Edit2.SetWindowTextW(L"");
try{
//设置进制的值
if(Check != precheck)//进制变换了,要改变编辑框的内容
{
int base = 10;
int prebase = 10;
switch(Check)
{
case 1042:
{
base = 16;
}break;//十六进制
case 1043:
{
base = 10;
}break;//十进制
case 1044:
{
base = 8;
}break;//八进制
case 1045:
{
base = 2;
}break;//二进制
}
switch(precheck)
{
case 1042:
{
prebase = 16;
}break;//十六进制
case 1043:
{
prebase = 10;
}break;//十进制
case 1044:
{
prebase = 8;
}break;//八进制
case 1045:
{
prebase = 2;
}break;//二进制
}
CString str = L"0";
GetDlgItem(IDC_EDIT1)->GetWindowText(str);//取得编辑框的内容
if(str.IsEmpty())//当编辑框为空的时候会出现异常
{
str = "0";
}
String ^str1 = gcnew String(str);//从CString转换为string
__int64 n = Convert::ToInt64(str1, prebase);//确定编辑框的进制,转换
String ^str2 = Convert::ToString(Convert::ToInt64(str1, prebase),base);//转为当前进制
CString str0(str2);
GetDlgItem(IDC_EDIT1)->SetWindowTextW(str0);//重设编辑框的内容
oper_str1 = str0;
first = 1;
oper_str2 = L"0";
UpdateData(TRUE);//更新编辑框的内容
delete str1;//防止内存泄漏
}
switch( Check )
{
case IDC_RADIO4:
{
Check_system = 16;
}break;
case IDC_RADIO5:
{
Check_system = 10;
}break;
case IDC_RADIO6:
{
Check_system = 8;
}break;
case IDC_RADIO7:
{
Check_system = 2;
}break;
}
HideShow(Check_system);//显示隐藏按钮
precheck = Check;//改变为当前的进制
}catch(Exception ^e)
{
System::String ^str("");
str = e->Message;
CString cs(str);
MessageBox(cs);
}
}
提示:用".NET“就很简单,用C语言函数也可以实现,不过我追求进度,就用了”.net“的函数…… 真的不太懂!! ?我的对话框只有两个编辑框和一个按扭,希望点击按扭输出结果,能直接用吗? 当然不能直接用,这代码只是提供一个思路而已。你百度or google一下进制度转换内容了。没有汗水怎么有收获,当年(也就上学期)写这个计算器就花了2K++的代码量,还是bug多多 。 CString firstedit;
GetDlgItemText(IDC_EDIT1, firstedit);
int n = atoi(firstedit);
CString secondedit;
secondedit.Format("%x", n);
SetDlgItemText(IDC_EDIT2, secondedit); 楼上的很厉害哦, ,但是我想小数都可以转换,怎么改好呢? 还有我想把“XXH”的H也显示出来? 计算机组成原理or计算机基础文化不是有介绍怎么转换小数的吗?你可以把整数部分和小数分开转换(它们之间有“.”号分隔的),然后再组合。
页:
[1]