从bitarray改为enum

Dav*_*lis 6 c# enums flags

我目前有一些粗略的谷歌代码..这有效,但我想换成枚举.

目前我需要一个字节来表示一些设置的位标志,

我目前有这个:

 BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
Run Code Online (Sandbox Code Playgroud)

用于排队..

new byte[] {ConvertToByte(bitArray)})
Run Code Online (Sandbox Code Playgroud)

使用此站点的ConvertToByte ...

    private static byte ConvertToByte(BitArray bits) // http://stackoverflow.com/questions/560123/convert-from-bitarray-to-byte
    {
        if (bits.Count != 8)
        {
            throw new ArgumentException("incorrect number of bits");
        }
        byte[] bytes = new byte[1];
        bits.CopyTo(bytes, 0);
        return bytes[0];
    }
Run Code Online (Sandbox Code Playgroud)

但是,当我触及时,我想使用枚举,所以我创建它:

[Flags]
public enum EventMessageTypes
{
    None = 0,
    aaa = 1, 
    bbb = 2, 
    ccc = 4, 
    ddd = 8, 
    eee = 16,
    fff = 32,   
    All = aaa | bbb | ccc | ddd | eee | fff // All Events
}
Run Code Online (Sandbox Code Playgroud)

然后

        // Do bitwise OR to combine the values we want
        EventMessageTypes eventMessages = EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc;
Run Code Online (Sandbox Code Playgroud)

但是我怎么把eventMessages变成一个字节(0x07)我想!所以我可以将它附加到我的字节数组?

meh*_*afa 2

只需将其转换为字节即可!
例子:

byte eventMessages =(byte)( EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc);
Run Code Online (Sandbox Code Playgroud)