我之前用控制台方式将程序写好并通过测试之后转换成MFC程序,可是运算结果和我之前的始终不一样(数值不一样,长度也少了一半!)。找了很久发现可能是我将 uint64_t 转换成 CString 类型时出现了问题。我该怎么将 uint64_t 转换成CString类型,并以16进制输出呢???

解决方案 »

  1.   

    _CRTIMP char * __cdecl _ui64toa(unsigned __int64, char *, int);
      

  2.   

    char *src=0;
    _ui64toa(usigned _int64,src,16)?
      

  3.   


    uint64_t a = 1;
    CString strTemp;
    strTemp.Format(_T("%08x"), a);
    格式化8位,不足8位以0补充
    结果 strTemp = "00000001"
      

  4.   


    请问,如果我之前控制台程序没有错的话,并且我只是在MFC中引用了我封装在类中的函数和数据。但是计算结果不一样,则只能是类型转换出了错?对么?
      

  5.   


    就是这样的。谢谢!高人                CString temp;
    char *buf=new char[65];
    for(int i=0;i<8;i++)
    {
    _ui64toa(sha512.hash[i],buf,16);
    temp=buf;
    Result512+=temp;
    }