将 4 字节的十六进制字符串转换为整数

Cod*_*_DJ 2 c++ mfc hex strtol

我正在尝试在 MFC 项目中进行从十六进制字符串到整数的转换。代码是这样的:

CString sMask = "0xFFFFFFE0";
char* pMaskBuffer   = sMask.GetBuffer(sMask.GetLength());               
sMask.ReleaseBuffer();
char * p = NULL;
long iMask = strtol(pMaskBuffer, &p, 16);
Run Code Online (Sandbox Code Playgroud)

当 sMask 变量很小时,代码运行良好。但是 4 字节掩码生成了奇怪的值。而不是 4294967264 ,我得到 2147483647. 如何克服这个。请帮忙。

小智 5

那是因为 strtol 返回 long use this

unsigned long iMask = strtoul(pMaskBuffer, &p, 16);
Run Code Online (Sandbox Code Playgroud)