如何获得按位组合的值

时间:2018-11-15 08:54:22

标签: c# bit-manipulation

我有一些类型,这些类型具有从复选框中选择的按位值[1,2,4,8,16,32],当保存到数据库时,我将选择的值组合起来,例如得到42的值。我要如何计算要从组合值中选择的值,在编辑屏幕上我要重新检查所选的值。

2 个答案:

答案 0 :(得分:1)

检查是否您的组合值中包含8,您可以使用按位和运算符,如下所示:

int combinedValue = 42;
int bitwiseValue = 8;
bool isBitwiseValueChecked = (combinedValue & bitwiseValue) == bitwiseValue;

答案 1 :(得分:0)

使用enum为标志建模:

public static void Main()
{
    Console.WriteLine((MyFlags)1); // Foo
    Console.WriteLine((MyFlags)7); // Foo, Bar, Baz

    Console.WriteLine((int)(MyFlags.Foo | MyFlags.Bar)); // 3
}

[Flags]
enum MyFlags 
{
    Foo = 1,
    Bar = 2,
    Baz = 4
}

然后,要列出所有成员,请参见List all bit names from a flag Enum