Attualmente ho un codice google approssimativo .. che funziona ma voglio passare a un enum.Cambio da bitarray a enum
Attualmente ho bisogno di un byte per rappresentare alcuni flag di bit che vengono impostati,
Al momento ho questo:
BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
utilizzato in linea ..
new byte[] {ConvertToByte(bitArray)})
con ConvertToByte da questo sito ...
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];
}
Tuttavia ho voluto usare un enum come ho toccato, così ho creato come così:
[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
}
e poi
// Do bitwise OR to combine the values we want
EventMessageTypes eventMessages = EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc;
Ma come faccio poi arrivare eventMessages a un byte (0x07) Credo! quindi posso aggiungerlo al mio array di byte?
Hmm ... Severity \t Codice \t Descrizione \t Progetto \t File \t Riga Errore \t CS0019 \t Operatore '|' non può essere applicato agli operandi di tipo "byte" e "EventMessageTypes" –
@David Wallis prestare attenzione alla parentesi per favore e riprovare.chiudi tutti gli operandi (|) a parentesi e lancia tutto a byte come un'istruzione. per esempio questa affermazione potrebbe essere un errore: '(byte) enum.value1 | enum.value2;' perché solo valore1 castato in byte. inserisci il tuo codice se continua a ricevere un errore. –
@ mehrdad safa .. grazie! –