我目前有一些粗糙的谷歌代码... 能够工作,但我希望改为使用枚举。
目前我需要一个字节来表示设置的一些位标志,
我目前有以下代码:
BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
用于行内的...
new byte[] {ConvertToByte(bitArray)})
使用此网站上的ConvertToByte函数...
private static byte ConvertToByte(BitArray bits) // https://dev59.com/F3RB5IYBdhLWcg3wpotm
{
if (bits.Count != 8)
{
throw new ArgumentException("incorrect number of bits");
}
byte[] bytes = new byte[1];
bits.CopyTo(bytes, 0);
return bytes[0];
}
但是,就像我提到的那样,我希望使用枚举类型,因此我将其创建为下面的形式:
[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
}
然后
// Do bitwise OR to combine the values we want
EventMessageTypes eventMessages = EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc;
但是我该如何将eventMessages转换为一个字节(0x07),以便可以将其附加到我的字节数组中呢?
(byte)enum.value1|enum.value2;
因为只有value1被转换为字节。如果仍然出现错误,请插入您的代码。 - mehrdad safa