字符串转数字
第一种方法:
void CStringToChar(CString m_snd,char *str2) { char buf[129]; //发送缓冲区 ZeroMemory(buf,sizeof(buf)); //缓冲区清零 CString tmpstr(m_snd); //复制要发送的字符串 int multibytelen=WideCharToMultiByte( //计算从Unicode转换到Ansi后需要的字节数 CP_ACP, //根据ANSI code page转换 WC_COMPOSITECHECK | WC_DEFAULTCHAR, //转换出错用缺省字符代替 tmpstr.GetBuffer(m_snd.GetLength()), //要转换的字符串地址 m_snd.GetLength(), //要转换的个数 0, //转换后字符串放置的地址 0, //最多转换字符的个数,为0表示返回转换Unicode后需要多少个字节 0, //缺省的字符:"\0" 0 //缺省的设置 ); WideCharToMultiByte( //转换Unicode到Ansi CP_ACP, WC_COMPOSITECHECK | WC_DEFAULTCHAR, tmpstr.GetBuffer(m_snd.GetLength()), m_snd.GetLength(), buf, //转换到缓冲区中 128, //最多128个字节 0, 0 ); strcpy(str2,buf);}//视CString字符串为16进制字符串,将其转换成intint strHexToInt(CString strSource){ int nTemp=0; for(int i = 0; i<(int)::strlen(strSource); i++) { int nDecNum; switch(strSource[i]) { case 'a': case 'A': nDecNum = 10; break; case 'b': case 'B': nDecNum = 11; break; case 'c': case 'C': nDecNum = 12; break; case 'd': case 'D': nDecNum = 13; break; case 'e': case 'E': nDecNum = 14; break; case 'f': case 'F': nDecNum = 15; break; case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9': nDecNum = strSource[i] - '0'; break; default: return 0; } nTemp += nDecNum * (int)::pow(16,::strlen(strSource)-i -1); } return nTemp;}
[解决办法]
不用那么麻烦的,用sscanf()觉得可以解决你的问题了,可以参考MSDN关于sscanf的使用方法
[解决办法]
WideCharToMultiByte
记下了,谢谢分享。