C# 前往';重新映射';一个简单的二进制掩码?
我得到了一个非常简单的二进制掩码 1=周日 2=星期六 4=星期五 8=周四 16=星期三 32=星期二 64=星期一 因此,如果你想要周三、周四和周五的组合,你会得到16+8+4=28 现在,在我的代码后面,我只有映射的二进制值。将此值(28)重新映射到Wed、Thu和Fri的最佳方式是什么 希望获得一些关于如何执行此操作的信息:) 亲切问候,,C# 前往';重新映射';一个简单的二进制掩码?,c#,binary,remap,C#,Binary,Remap,我得到了一个非常简单的二进制掩码 1=周日 2=星期六 4=星期五 8=周四 16=星期三 32=星期二 64=星期一 因此,如果你想要周三、周四和周五的组合,你会得到16+8+4=28 现在,在我的代码后面,我只有映射的二进制值。将此值(28)重新映射到Wed、Thu和Fri的最佳方式是什么 希望获得一些关于如何执行此操作的信息:) 亲切问候,, Niels您应该使用枚举: [Flags] public enum WeekDays { Sunday = 1, Saturday
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)
也会给出逗号分隔的表示法
您可能还会发现我的库中的实用程序方法很有用(尤其是代码)
如果您正在查找其他内容,请更具体。您应该使用枚举:
[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)
也会给出逗号分隔的表示法
您可能还会发现我的库中的实用程序方法很有用(尤其是代码)
如果您正在寻找其他内容,请更具体。您所说的“重新映射”是什么意思?这仅仅是一个丢失枚举类型的问题,还是一个获取值的可读字符串描述的问题?下面是一个很好的解决方案:“重新映射”是什么意思?这仅仅是一个丢失枚举类型的问题,还是一个获取值的可读字符串描述的问题?下面是一个很好的解决方案:您能否提供一些示例代码,说明如何使用这些实用程序方法来生成OP正在寻找的答案?这会特别有帮助。@GeorgeStocker:老实说,OP到底想要什么还不完全清楚——一个变量?三个?而且,
Flags
enum
上的ToString()
可以生成“星期三、星期四、星期五”。@CoryNelson:Yup-“即使只使用控制台。WriteLine(days)
也会给您一个逗号分隔的表示法。”(尽管我不知道顺序是什么。)@尼尔斯:那么,看看我在答案末尾给出的循环。你能提供一些示例代码,说明如何使用这些实用方法来生成OP想要的答案吗?这会特别有帮助。@GeorgeStocker:老实说,OP到底想要什么还不完全清楚——一个变量?三个?而且,Flags
enum
上的ToString()
可以生成“星期三、星期四、星期五”。@CoryNelson:Yup-“即使只使用控制台。WriteLine(days)
也会给您一个逗号分隔的表示法。”(尽管我不知道顺序是什么。)@尼尔斯:那么看看我在答案末尾给出的循环。