工大后院

 找回密码
 加入后院

扫一扫,访问微社区

QQ登录

只需一步,快速开始

搜索
查看: 2357|回复: 7

转换(VC)

[复制链接]
发表于 2008-5-26 20:59 | 显示全部楼层 |阅读模式
我想在一个编辑框里输入一个十进制数,然后在另一个编辑框里输出十六进制(大写的,如“XXH”),能提供一下代码吗?谢谢!
发表于 2008-5-26 22:51 | 显示全部楼层
代码而已嘛,简单……不过你看得懂才好:

  1. //变换进制
  2. void CcalculatorDlg::OnCheck_System_Radio(UINT Check)
  3. {
  4. m_Edit2.SetWindowTextW(L"");
  5. try{
  6.   //设置进制的值
  7.   if(Check != precheck)//进制变换了,要改变编辑框的内容
  8.   {
  9.    int base = 10;
  10.    int prebase = 10;
  11.    switch(Check)
  12.    {
  13.    case 1042:
  14.     {
  15.      base = 16;   
  16.     }break;//十六进制
  17.    case 1043:
  18.     {
  19.      base = 10;
  20.     }break;//十进制
  21.    case 1044:
  22.     {
  23.      base = 8;   
  24.     }break;//八进制
  25.    case 1045:
  26.     {
  27.      base = 2;
  28.     }break;//二进制
  29.    }
  30.    switch(precheck)
  31.    {
  32.    case 1042:
  33.     {
  34.      prebase = 16;   
  35.     }break;//十六进制
  36.    case 1043:
  37.     {
  38.      prebase = 10;
  39.     }break;//十进制
  40.    case 1044:
  41.     {
  42.      prebase = 8;   
  43.     }break;//八进制
  44.    case 1045:
  45.     {
  46.      prebase = 2;
  47.     }break;//二进制
  48.    }
  49.    CString str = L"0";
  50.    GetDlgItem(IDC_EDIT1)->GetWindowText(str);//取得编辑框的内容
  51.    if(str.IsEmpty())//当编辑框为空的时候会出现异常
  52.    {
  53.     str = "0";
  54.    }
  55.    String ^str1 = gcnew String(str);//从CString转换为string
  56.    __int64 n = Convert::ToInt64(str1, prebase);//确定编辑框的进制,转换
  57.    String ^str2 = Convert::ToString(Convert::ToInt64(str1, prebase),base);//转为当前进制
  58.    CString str0(str2);
  59.    GetDlgItem(IDC_EDIT1)->SetWindowTextW(str0);//重设编辑框的内容
  60.    oper_str1 = str0;
  61.    first = 1;
  62.    oper_str2 = L"0";
  63.    UpdateData(TRUE);//更新编辑框的内容
  64.    delete str1;//防止内存泄漏
  65.   }
  66.   switch( Check )
  67.   {
  68.   case IDC_RADIO4:
  69.    {
  70.     Check_system = 16;
  71.    }break;
  72.   case IDC_RADIO5:
  73.    {
  74.     Check_system = 10;
  75.    }break;
  76.   case IDC_RADIO6:
  77.    {
  78.     Check_system = 8;
  79.    }break;
  80.   case IDC_RADIO7:
  81.    {
  82.     Check_system = 2;
  83.    }break;
  84.   }
  85.   HideShow(Check_system);//显示隐藏按钮
  86.   precheck = Check;//改变为当前的进制
  87. }catch(Exception ^e)
  88. {
  89.   System::String ^str("");
  90.   str = e->Message;
  91.   CString cs(str);
  92.   MessageBox(cs);
  93. }
  94. }


复制代码

提示:用".NET“就很简单,用C语言函数也可以实现,不过我追求进度,就用了”.net“的函数……
回复

使用道具 举报

 楼主| 发表于 2008-5-26 23:19 | 显示全部楼层
真的不太懂!! ?我的对话框只有两个编辑框和一个按扭,希望点击按扭输出结果,能直接用吗?
回复

使用道具 举报

发表于 2008-5-27 07:58 | 显示全部楼层
当然不能直接用,这代码只是提供一个思路而已。你百度or google一下进制度转换内容了。没有汗水怎么有收获,当年(也就上学期)写这个计算器就花了2K++的代码量,还是bug多多
回复

使用道具 举报

发表于 2008-5-27 11:22 | 显示全部楼层
CString firstedit;
GetDlgItemText(IDC_EDIT1, firstedit);
int n = atoi(firstedit);
CString secondedit;
secondedit.Format("%x", n);
SetDlgItemText(IDC_EDIT2, secondedit);
回复

使用道具 举报

 楼主| 发表于 2008-5-27 11:50 | 显示全部楼层
楼上的很厉害哦, ,但是我想小数都可以转换,怎么改好呢?
回复

使用道具 举报

 楼主| 发表于 2008-5-27 11:52 | 显示全部楼层
还有我想把“XXH”的H也显示出来?
回复

使用道具 举报

发表于 2008-5-27 13:03 | 显示全部楼层
计算机组成原理or计算机基础文化不是有介绍怎么转换小数的吗?你可以把整数部分和小数分开转换(它们之间有“.”号分隔的),然后再组合。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 加入后院

本版积分规则

QQ|Archiver|手机版|小黑屋|广告业务Q|工大后院 ( 粤ICP备10013660号 )

GMT+8, 2025-8-30 06:58

Powered by Discuz! X3.5

Copyright © 2001-2024 Tencent Cloud.

快速回复 返回顶部 返回列表