请问如何用edit自动转换输入的进制数,比如我输入16进制的数字,按确定后就转换成10进制.

解决方案 »

  1.   

    CString str;
    int iVal;
    GetDlgItemText(IDC_EDIT1, str);
    sscanf(str, _T("%x"), &iVal);
      

  2.   


    wsprintf 之类的函数都有 %x , %X 的参数 , 分别可以把数值转换成 小写16进制和大写16进制
      

  3.   

    error C2664: “sscanf”: 不能将参数 1 从“CString”转换为“const char *”
    请问我直接使用后出现了这个错误提示,这是为什么呢?
      

  4.   

    楼上两位没有理解楼主的意思,是输入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;
    }
      

  5.   

    CString str;
    int iVal;
    GetDlgItemText(IDC_EDIT1, str);
    iVal = _tcstoul(str, NULL, 16);str.Format(_T("%d"), iVal);
    SetDlgItemText(IDC_EDIT1, str);
      

  6.   

    如果是UNICODE,就把sscanf换成swscanf.