我得到了一个非常简单的二进制掩码。
1 = Sunday
2 = Saturday
4 = Friday
8 = Thursday
16 = Wednesday
32 = Tuesday
64 = Monday
So if you want a combination of Wednesday, Thursday and Friday you get 16 + 8 + 4 = 28
现在,在我的代码中,我只有映射的二进制值。将此值 (28)“重新映射”到周三、周四和周五的最佳方式是什么?
希望得到一些关于如何做到这一点的意见:)。
亲切的问候, 尼尔斯
最佳答案
你应该使用枚举:
[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
代码)。
如果您正在寻找其他东西,请更具体一些。
关于c# - 'remap' 一个简单的二进制掩码的最佳方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20828170/