Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/entity-framework/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 前往';重新映射';一个简单的二进制掩码?_C#_Binary_Remap - Fatal编程技术网

C# 前往';重新映射';一个简单的二进制掩码?

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

我得到了一个非常简单的二进制掩码

1=周日

2=星期六

4=星期五

8=周四

16=星期三

32=星期二

64=星期一

因此,如果你想要周三、周四和周五的组合,你会得到16+8+4=28

现在,在我的代码后面,我只有映射的二进制值。将此值(28)重新映射到Wed、Thu和Fri的最佳方式是什么

希望获得一些关于如何执行此操作的信息:)

亲切问候,,
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)
也会给您一个逗号分隔的表示法。”(尽管我不知道顺序是什么。)@尼尔斯:那么看看我在答案末尾给出的循环。