私は現在、いくつかの原始的なGoogleコードを持っています..それは動作しますが、私は列挙型にスワップしたいです。bitarrayからenumに変更
は現在、私は、私は現在、これを持って
、設定されているいくつかのビットフラグを表現するためにバイトが必要になります。このことからConvertToByteとラインで使用
BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
..
new byte[] {ConvertToByte(bitArray)})
サイト...
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];
}
は、しかし、私は私が触れたとして列挙型を使用していたので、私はそれを作成しました:
[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の)おもう!私はそれを私のバイト配列に追加できますか?私はあなたの問題の権利を理解していれば
うーん...重大\tコード\t説明\tプロジェクト\tファイル'によって列挙するint型に変換することができます\t行 エラー\t CS0019 \t演算子 '|' 'byte'型と 'EventMessageTypes'型のオペランドには適用できません –
@David Wallis括弧に注意してください。もう一度やり直してください。すべての(|)オペランドを括弧に閉じ、すべてを1つのステートメントとしてbyteにキャストします。たとえば、value1だけがbyte型にキャストされているため、この文はエラー( '(byte)enum.value1 | enum.value2;まだエラーが発生した場合は、コードを挿入してください。 –
@ mehrdad safa ..ありがとう! –