<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; |