CString strData = "0xFF0000";
long lData = 0L;如何将strData转换,让lData=0xFF0000呢

解决方案 »

  1.   


    sscanf(strData,"%d",&lData);
      

  2.   

    我没有见过直接能转换的函数,估计要写函数去算了
    atoi这类函数,我试过只能转10进制的
      

  3.   

    lData = strstoul(strData,NULL,16);
      

  4.   

    lData = atoi(strData.GetBuffer(0));
    由于计算中保存的数字都是同一种格式,所以强调进制没有意义。但是在格式化输出时有明显区别,搂住可以这样做:
    char strBuffer[MAX];
    sprintf(strBuffer,"%d",lData);  // 10进制
    sprintf(strBuffer,"%x",lData);  // 16进制
    更多的格式化方法请参考MSDN
    ms-help://MS.VSCC.2003/MS.MSDNQTR.2003FEB.2052/vclib/html/_crt_format_specification_fields_.2d_.printf_and_wprintf_functions.htm
      

  5.   

    伯虎: strstoul这个函数是哪个库的,MSDN里面好象没有啊
      

  6.   

    sorry,手误!
    lData = strtoul(strData,NULL,16);
      

  7.   

    谢谢: bohut(伯虎)  FredYoung()  lhj0532(owen) 已OK经测试,以下两种方法均可 //方法一
    CString strData = "0xFF0000";
    long lData = 0L;
    lData = _tcstoul(strData, NULL, 16);

    //方法二
    CString strData = "0xFF0000";
    long lData = 0L;
    _stscanf((LPCTSTR)strData, _T("%x"), &lData);感谢各位,分数奉上,高人笑纳