需要把一个十六进制的字符串转化成数字。不能用那个十六进制的DLL。CString m("0E");
CString temp = "0x"+m;或者不要0x
int n;然后不管用上面的哪个函数进行转化,都需要的是char*格式的。直接把CString放进去是编译不通过的。用(char*)m.GetBuffer(m.GetLength())或者(char*)(LPCTSTR)m,
都只能转变m的第一个字符。
CString temp = "0x"+m;或者不要0x
int n;然后不管用上面的哪个函数进行转化,都需要的是char*格式的。直接把CString放进去是编译不通过的。用(char*)m.GetBuffer(m.GetLength())或者(char*)(LPCTSTR)m,
都只能转变m的第一个字符。
或
CString temp = "0x";
temp+=m.GetBuffer(0);
或者用sscanf是最好的,可以帮你消除中间的空格符.
只能读到第一个字符,被(char*)强制转换后,就只剩下一个字符了。
CString m("0x0E");//m("0E");
ULONG ul = strtoul(m, NULL, 16);顺便说说
'0'和'\0'是不同的,'\0'才是字符串结束符
LZ的m[0]='0'而不是'\0'