用VC 编计算器实现二、十、十六进制的相互转换,输入数值之后系统会默认为十进制,怎么让其变为其他进制

[复制链接]
查看11 | 回复1 | 2011-3-25 02:42:22 | 显示全部楼层 |阅读模式
比如我输入10(我想从二进制转为16进制)但VC会默认10为十进制数,怎么办?
回复

使用道具 举报

千问 | 2011-3-25 02:42:22 | 显示全部楼层
<pre id=\"best-answer-content\" class=\"reply-text mb10\">设置两个编辑框 一个为输入2进制,一个为输出16进制,设置关联变量为CString就不会出现直接默认为10进制的问题了,下面是我写的转化过程
// strBinary为输入的2进制 字符串 ;strHex 为要输出的16进制字符串
int nLength = strBinary.GetLength();
CString str = strBinary;
//位数不是四的倍数时补齐
switch(nLength%4)
{
case 0:
break;
case 1:
strBinary.Format(\"%d%d%d%s\",0,0,0,str);
break;
case 2:
strBinary.Format(\"%d%d%s\",0,0,str);
break;
case 3:
strBinary.Format(\"%d%s\",0,str);
break;
default:
return \"\";
break;
}

CString strHex,str1;
str1 = \"\";
nLength = strBinary.GetLength();
for(int i=1;i=(nLength/4);i)
{
//每四位二进制数转换为一十六进制数
str = strBinary.Left(4);
CString strDecimal = BinaryToDecimal(str);
int nDecimal = atoi(strDecimal.GetBuffer(0));
if(nDecimal10)
str1.Format(\"%d\",nDecimal);
else
{
char c = \'A\' (nDecimal-10);
str1.Format(\"%c\",c);
}
strHex= str1;
strBinary = strBinary.Right(strBinary.GetLength()-str.GetLength());
}
return strHex;
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行