Şu anda biraz ham google kodum var .. bu işe yarıyor ama ben bir takas takas etmek istiyorum.bitarray ile enum arasında değiştirin
Şu anda Şu anda bu var
, ayarlanan bazı bit bayrakları temsil etmek üzere bir bayt gerekir: bundan ConvertToByte doğrultusunda kullanılan
BitArray bitArray =new BitArray(new bool[] { true, true, false, false, false, false, false, false });
..
new byte[] {ConvertToByte(bitArray)})
site ...
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];
}
Ben değindiğimiz olarak
Ancak bir enum kullanmak istedi, bu yüzden şekilde oluşturulduğu:
[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
}
ve sonra
// Do bitwise OR to combine the values we want
EventMessageTypes eventMessages = EventMessageTypes.aaa | EventMessageTypes.bbb | EventMessageTypes.ccc;
Ama sonra bir bayt eventMessages nasıl elde edersiniz (0x07) Bence! bunu bayt dizime ekleyebilir miyim? Ben senin sorunun hakkına anlamak
Hmm ... Önem \t Kod \t Açıklama \t Proje \t Dosya' tarafından enum int dönüştürmek \t Satır Hata \t CS0019 \t Operatör '|' 'byte' ve 'EventMessageTypes' –
@David Wallis türlerine işlenemez, lütfen paranteze dikkat edin ve tekrar deneyin.tüm (|) işlenenleri paranteze kapatın ve tüm ifadeleri tek bir ifade olarak atayın. Örneğin, bu ifade bir hata olabilir: '(byte) enum.value1 | enum.value2; çünkü yalnızca değer1 bayt olarak yayınlanır. Hala hata alıyorsanız kodunuzu ekleyin. –
@ mehrdad safa .. thankyou! –