我目前有一些粗略的谷歌代码..这有效,但我想换成枚举.
目前我需要一个字节来表示一些设置的位标志,
我目前有这个:
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)我想!所以我可以将它附加到我的字节数组?
只需将其转换为字节即可!
例子:
byte eventMessages =(byte)( EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc);
Run Code Online (Sandbox Code Playgroud)