我有一个数据库表,它包含一个字段名省位,它将模式的计数相加如下:
AB-1
BC-2
CD-4
DE-8
EF-16.... and so on.现在,在表条目中,我有一个值-13(省位),这意味着应该检查AB、CD、DE(加起来为13)的复选框。
我无法得到同样的逻辑,怎么能只检查那些加起来等于表中条目的复选框呢?
发布于 2012-09-30 14:27:25
字段使用位标志。
13是1101二进制。
因此,将值转换为位,并为每个复选框分配一位。
发布于 2012-09-30 14:26:35
您需要检查该值是否为按位总计。
if( interestedInValue & totalValue == interestedInValue)
{
// this value is in the total, check the box
}关于& http://msdn.microsoft.com/en-us/library/sbf85k1c(v=vs.71).aspx的文档
例如13 =1+4+8
13 &1 == 1 //真
13及2 == 2/假
13 &4 == 4 //真
13 &8 == 8 //真
13 & 16 == 16 //假
编辑:欲获得更多澄清
ab.Checked = 1 && ProvinceBit == 1 // checkbox AB
bc.Checked = 2 && ProvinceBit == 2 // checkbox BC
...发布于 2012-10-01 01:57:08
通过将数字转换为字符串,您可以转换为数组,或者只需遍历字符串。有点蛮力,但会给你你所需要的。
var value = 13
string binary = Convert.ToString(value, 2);
//binary = "1101"https://stackoverflow.com/questions/12661907
复制相似问题