我正在尝试将字符串转换为unsigned long。这是代码
lCardNum = wcstoul(sCardNo.GetBuffer(sCardNo.GetLength()), NULL,0);
我的sCardNo(CString)
值为4294967359。
为什么我将lCardNum(unsigned long)
作为4294967295
?
答案 0 :(得分:7)
假设你的无符号长整数是32位宽,那么你就会溢出它。 0xFFFFFFFF是4294967295.你想要的4294967359是0x10000003F,即,它需要33位。
在Windows框中转到unsigned long long
或__int64
,查找_wcstoui64
。