“重映射”一个简单的二进制掩码的最佳方法是什么?
我有一个非常简单的二进制掩码。
1 =星期天
2 =星期六
4 =星期五
8 =星期四
16 =周三
32 =星期二
64 =星期一
所以如果你想要星期三,星期四和星期五的组合,你会得到16 + 8 + 4 = 28
现在进一步沿着我的代码,我只有映射的二进制值。 “重新映射”这个值(28)到周三,周四和周五的最佳方式是什么?
希望得到一些关于如何做到这一点的意见:)。
亲切的问候,Niels
你应该使用枚举:
[Flags]
public enum WeekDays
{
Sunday = 1,
Saturday = 2,
Friday = 4,
Thursday = 8,
Wednesday = 16,
Tuesday = 32,
Monday = 64
}
一个简单的显式转换将执行您感兴趣的“重新映射”:
WeekDays days = (WeekDays) 28;
您可以轻松使用正常的按位运算:
if ((days & WeekDays.Friday) != 0)
{
// Yes, the mask included Friday
}
你可以在一个循环中做到这一点:
foreach (WeekDays day in Enum.GetValues(typeof(WeekDays))
{
if ((days & day) != 0)
{
Console.WriteLine("Got {0}", day);
}
}
即使只使用Console.WriteLine(days)
也会给你一个逗号分隔的表示。
您也可以在我的Unconstrained Melody库中找到有用的实用方法(特别是Flags
代码)。
如果你正在寻找其他东西,请更具体。
链接地址: http://www.djcxy.com/p/54889.html