将32位值映射到每个位的不同状态

时间:2012-03-19 11:49:09

标签: c# map status bit

我需要实现某种位状态映射,我不知道如何实现这个东西 - 也许我有一个块头;)

好的,所以我的状态代码可以是最大值。 32位长,例如1001 0011 每个位都属于一个特殊的状态代码 - 字符串。

例如:

Bit 1: String Cancel
Bit 2: String Okay
Bit 3: String Save
....
Bit 32: String Next

现在我必须确定设置了哪些位并返回所有状态代码 - 设置为32位长状态的字符串。

我喜欢某种词典或者总结,我可以为每个位存储相应的状态代码。

然后我想循环通过32位长的状态代码并从字典中获取相应的状态代码字符串 - 将其存储在字符串中,并在32位长状态代码循环后返回它。

有人对此有所了解吗?

1 个答案:

答案 0 :(得分:3)

您可以使用带有flags属性的枚举。枚举可以从int转换为int。 可以设置每个枚举值,以使您的状态看起来像这样

[Flags]
enum Status { None = 0 , Cancel = 1 , Ok = 2 , Save = 4 ... } 

标志属性

  

表示可以将枚举视为位字段;那是,   一组旗帜。

你可以用

进行测试
 if ((status & Status.Ok) == Status.Ok)
 {
 // Do something
 }