描述一:在MFC界面操作中,为了标识不同复选框的组合,可以采用CString来标记不同的选中和未选中位,比如用户权限有6种,每一种可选可不选。如何将选择的CString的“0101”等字符串转换成int 类型,便于读者理解呢?
提炼:MFC中将只含有“0”和"1"的CString字符串转换为int?
答:举例:CString str = "000011";
char *ch = str.GetBuffer(str.Getlength() + 1);
str.ReleaseBuffer();
int num = strtoul(ch,NULL,2);//将字符串转换成无符号长整型
描述二:依据上面描述,将int 类型转换成二进制数,又该如何操作呢?
提炼:MFC中将CStriing类型转换成int类型,再转换成用字符串表示的二进制形式?
答://将CString 转换成 int
CString str = "3";
int idata = atoi(str);//3
//将int或者十进制转换成二进制,并依据上题情况实现6位字符串
CString GetStringTest(int data)
{ CString tempstr,outstr;
int iBin[32];//存储每一位bit的二进制
int i = 0;
//顺序获得二进制的各个位
while(data)
{ iBin[ i ] = data%2;
data = data / 2;
i++;
}
//输出各个位数
for(int j = i -1;j >= 0;j--)
{ tempstr.Format("%d",iBin[j]);
outstr =outstr + tempstr;
}
//将获得的字符串统一到6位
int nlen = outstr.GetLength();
if(nlen < 6)
{
int n = 6 - nlen;
CString ss m= "0";
for(int m = 1;m < n;m++)
{
ss += "0";
}
outstr = ss + outstr;
}
return outstr;
}