背景:
有个错误按理给大家借鉴下,上位机有一个功能,从界面获取输入的数字字符串,该数会用来参运算,刚开始获取到字符串后使用_ttoi进行转换,测试发现界面输入的数字字符串2147483647(7FFFFFFF)的时候,转换得到的数并不是我想要的,最后发现原来是使用_ttoi 函数导致的,这个函数值将界面输入的数字字符串转换为有符号的长整型数,最高位会被当作是符号位,最后搜索发现, _tcstoul函数可以将数字字符串转换为无符号的长整型数,这两函数的原型如下:
int _ttoi(LPCTSTR lpszString);
`lpszString`是要转换的字符串,`
举例:
String str = “2147483647”;
int i= 0;
i= _ttoi(str );
unsigned long _tcstoul(LPCTSTR lpszString, LPTSTR* lpszEnd, int nBase);
`lpszString`是要转换的字符串,`lpszEnd`是一个指向指针的指针,用于返回转换结束的位置,`nBase`是进制数。该函数会将字符串转换为对应的无符号长整数,并返回转换后的结果
举例:
String str = “2147483647”;
LPTSTR lpszEnd;
unsigned int i= 0;
i= _tcstoul(str ,&lpszEnd,10);
如有问题还请指正,共同努力、共同进步、彼此互勉!!!