资源大小: 51KB
发布时间: 2006-05-15
文件格式: rar
下载次数: 0
分享到:

下载地址:

下载地址1
(本站为飞网专业下载站,域名:down.cfei.net)

资源简介:

总结了一下关于2进制8进制,10进制16进制之间的转换问题,特意写了一个Demo供大家参考,数据输入未做校验,就是说,输入2进制的数据时,可以数据大于2的数值,程序不给出错误提示,但在转换的时候会有显示超出,请大家用的时候,按照标准输入,不要输入一些非法数值.也不要把输入的10进制当2进制转换.好了,我简单说一下这个程序的一个重要算法,具体还的看代码中注释: //将表达式中的十六进制数转换成十进制 void CTodataDlg::Hex2Dec(CString *strExp) \{ int len,i; DWORD strleng = strExp->GetLength(); CString strTmp,strDF; char ch; double dx; if(strleng !=0 || strleng != -1) \{ dx=0; strTmp=""; strDF=""; strExp->Delete(strleng,2); for(i=strleng-1;i>=0;i--) \{ ch=strExp->GetAt(i); if(ch>=48 && ch<=57 || ch>=97 && ch<=102 ||ch==46) \{ strTmp.Insert(0,strExp->Mid(i,1)); strExp->Delete(i); } else break; } strTmp.MakeReverse(); len=strTmp.GetLength(); for(i=0;i=48 && ch<=57)//该数在0~9之间 \{ dx+=(ch-48)*pow(16,i); } else if(ch>=97 && ch<=102)//该数在a~f之间 \{ dx+=(ch-87)*pow(16,i); } } len=strDF.GetLength(); for(i=0;i=48 && ch<=57)//该数在0~9之间 \{ dx+=(ch-48)*pow(16,-i-1); } else if(ch>=97 && ch<=102)//该数在a~f之间 \{ dx+=(ch-87)*pow(16,-i-1); } } strTmp=NtoS(dx); strExp->Empty(); strExp->Insert(0,strTmp); } } 看看,这样是不是注释的很清楚!!??对于数值转换的新手很有帮助,对于做一款计算器之类东西也有一定的参考价值. 有问题可以和我交流http://www.fishsky.com.cn


飞网下载站,免费下载共享资料,内容涉及教育资源、专业资料、IT资源、娱乐生活、经济管理、办公文书、游戏资料等。