Ich habe derzeit einige grobe Google-Code .. das funktioniert, aber ich möchte zu einem Enum tauschen.Wechsel von Bitarray zu Enum
Zur Zeit muss ich ein Byte einige Bitflags darzustellen, die gesetzt sind,
ich zur Zeit dieses:
BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
in Zeile verwendet ..
new byte[] {ConvertToByte(bitArray)})
mit ConvertToByte von diesem Standort ...
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];
}
Allerdings wollte ich eine Enumeration verwenden, wie ich berühren, so Ich habe es als so:
[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
}
und dann
// Do bitwise OR to combine the values we want
EventMessageTypes eventMessages = EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc;
Aber wie kann ich dann eventMessages auf ein Byte erhalten (0x07) Ich denke! also kann ich das an mein Byte-Array anhängen?
Hmm ... Severity \t-Code \t Beschreibung \t Projekt \t Datei konvertieren \t Zeile Fehler \t CS0019 \t Operator '|' kann nicht auf Operanden vom Typ 'Byte' und 'EventMessageTypes' angewendet werden –
@David Wallis bitte achten Sie auf Klammern bitte und versuchen Sie es erneut.schließe alle (|) Operanden in Klammern und wirf alle auf Byte als eine Anweisung. Zum Beispiel könnte diese Anweisung ein Fehler sein: '(Byte) enum.value1 | enum.value2;' weil nur Wert1 in Byte umgewandelt wird. Fügen Sie Ihren Code ein, wenn der Fehler weiterhin auftritt. –
@ mehrdad safa .. danke! –