我们有以下项目供用户选择:
当用户选择项目并提交时,我们会保存
等信息我想检查用户是否从已选择的值中选择了item1或item2或item3或item4。 如何在c#或ms-sql或javascript中找到它?
答案 0 :(得分:1)
基本上,将数字表示为2的幂的总和是二进制数表示的全部内容。考虑19 = 1 + 2 + 16,因此二进制是10011.如果要检查总和是否包含特定的2的幂,可以使用bitwise operations
if(myNum & (1 << i))
将检查第i位是否设置,换句话说,是否包含2的幂的总和。
答案 1 :(得分:-1)
在C#中,使用带有这样的标志的枚举字段:
[Flags] // This Attribute ensures that these items are handled as flags
public enum itemFlags
{
None = 0
item1 = 1,
item2 = 2,
item3 = 4,
item4 = 8
}
重要的是所有值都是2的幂,并且你有None = 0(如果没有设置标志)。然后,您可以使用ToString-Method获取所有已设置的标志。
例如,
Console.WriteLine(((itemFlags)9).ToString())
应输出“item1,item4”。
修改强>
要确定是否选择了标志,您还可以使用HasFlags-Method:
itemFlags myFlags = itemFlags.item1 | itemFlags.item3;
bool isItem1Selected = myFlags.HasFlag(itemFlags.item1);
Console.WriteLine(isItem1Selected.ToString());
这应该打印“True”。
答案 2 :(得分:-2)
done it in js . can you try it ?
<pre>
var number=30;
while(number > 0) {
if(number>=16) { number=number-16; alert("Item4"); }
else if(number>=8) { number=number-8; alert("Item3"); }
else if(number>=4) { number=number-4; alert("Item2"); }
else if(number>=2) { number=number-2; alert("Item1"); }
else { number=-1; } }
</pre>