请教edit控件16进制转换10进制的方法. 请问如何用edit自动转换输入的进制数,比如我输入16进制的数字,按确定后就转换成10进制. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 CString str;int iVal;GetDlgItemText(IDC_EDIT1, str);sscanf(str, _T("%x"), &iVal); wsprintf 之类的函数都有 %x , %X 的参数 , 分别可以把数值转换成 小写16进制和大写16进制 error C2664: “sscanf”: 不能将参数 1 从“CString”转换为“const char *”请问我直接使用后出现了这个错误提示,这是为什么呢? 楼上两位没有理解楼主的意思,是输入16制,再转换为10进制楼主自己编写一个16制字符转换为10进制的函数,如StrHextoDec()本人常用的函数如下:// 十六进制字符转十进制数(有符号整数)// 与前面的"0x"无关, 把字符串当十六进制字符就行int HexStrToDecInt(CString strHex){ int iResult = 0, nn = 0; CString strTmp; for(int i=0; i<strHex.GetLength(); i++) { strTmp = strHex.Right(i+1).Left(1); if(strTmp==_T("A") || strTmp==_T("a")) nn = 10; else if(strTmp==_T("B") || strTmp==_T("b")) nn = 11; else if(strTmp==_T("C") || strTmp==_T("c")) nn = 12; else if(strTmp==_T("D") || strTmp==_T("d")) nn = 13; else if(strTmp==_T("E") || strTmp==_T("e")) nn = 14; else if(strTmp==_T("F") || strTmp==_T("f")) nn = 15; else nn = _ttoi(strTmp); iResult = iResult+nn*(int)pow(16,i); // pow(16,i):16的i次方 } return iResult;} CString str;int iVal;GetDlgItemText(IDC_EDIT1, str);iVal = _tcstoul(str, NULL, 16);str.Format(_T("%d"), iVal);SetDlgItemText(IDC_EDIT1, str); 如果是UNICODE,就把sscanf换成swscanf. CWeixin类更新了,做PC版微信功能更强大 VC获取指定进程的端口 关于程序结构的问题! WIN98可以升级到WIN2000吗? 升级后原WIN98的程序可用吗? 标准动态链接MFC DLL 包含哪些dll文件? 已经有IDL文件,怎么样用ATL实现其中的接口啊? 关于释放内存的问题 如何让编辑框自动滚屏 高手指教,文件映射尺寸、关闭问题 关于paint的简单问题,急等解答,谢谢 DLL映射怎么理解 CEdit编辑框控件输出范围控制?
int iVal;
GetDlgItemText(IDC_EDIT1, str);
sscanf(str, _T("%x"), &iVal);
wsprintf 之类的函数都有 %x , %X 的参数 , 分别可以把数值转换成 小写16进制和大写16进制
请问我直接使用后出现了这个错误提示,这是为什么呢?
// 与前面的"0x"无关, 把字符串当十六进制字符就行
int HexStrToDecInt(CString strHex)
{
int iResult = 0, nn = 0;
CString strTmp;
for(int i=0; i<strHex.GetLength(); i++)
{
strTmp = strHex.Right(i+1).Left(1);
if(strTmp==_T("A") || strTmp==_T("a")) nn = 10;
else if(strTmp==_T("B") || strTmp==_T("b")) nn = 11;
else if(strTmp==_T("C") || strTmp==_T("c")) nn = 12;
else if(strTmp==_T("D") || strTmp==_T("d")) nn = 13;
else if(strTmp==_T("E") || strTmp==_T("e")) nn = 14;
else if(strTmp==_T("F") || strTmp==_T("f")) nn = 15;
else nn = _ttoi(strTmp);
iResult = iResult+nn*(int)pow(16,i); // pow(16,i):16的i次方
}
return iResult;
}
int iVal;
GetDlgItemText(IDC_EDIT1, str);
iVal = _tcstoul(str, NULL, 16);str.Format(_T("%d"), iVal);
SetDlgItemText(IDC_EDIT1, str);