5
Czy istnieje klasa wbudowana lub coś w .NET, które pozwoli mi traktować tablicy bajtów jako duże bitfield?tablica bajtów jako bitfield w C#?
Czy istnieje klasa wbudowana lub coś w .NET, które pozwoli mi traktować tablicy bajtów jako duże bitfield?tablica bajtów jako bitfield w C#?
Spójrz na klasę BitArray.
Oto przykład wyjaśniający, co się dzieje podczas korzystania z tablicy bajtów:
byte[] myBytes = new byte[5] { 1, 2, 3, 4, 5 };
BitArray myBA3 = new BitArray(myBytes);
Console.WriteLine("myBA3");
Console.WriteLine(" Count: {0}", myBA3.Count);
Console.WriteLine(" Length: {0}", myBA3.Length);
Console.WriteLine(" Values:");
PrintValues(myBA3, 8);
public static void PrintValues(IEnumerable myList, int myWidth)
{
int i = myWidth;
foreach (Object obj in myList)
{
if (i <= 0)
{
i = myWidth;
Console.WriteLine();
}
i--;
Console.Write("{0,8}", obj);
}
Console.WriteLine();
}
Ten kod daje następujący wynik.
myBA3
Count: 40
Length: 40
Values:
Bit0 Bit1 Bit2 Bit3 Bit4 Bit5 Bit6 Bit7
True False False False False False False False
Bit8 Bit9 Bit10 Bit11 Bit12 Bit13 Bit14 Bit15 ... and so on
False True False False False False False False
True True False False False False False False
False False True False False False False False
True False True False False False False False
Tak, próbowałem go używać, ale wydaje się, że kopuła jakiś ostry rzeczy wewnętrznie, jak to odwrócić kolejność bajtów albo coś ... – Anon
@Anon - Można dodawać kolejne pytanie ze swoich problemów za pomocą klasy BitArray w tym bieżący test i nieoczekiwane wyniki. – SwDevMan81
@Anon: Myślę, że 'BitArray' używa wewnętrznie tablicy' int [] ', ale nie jestem pewna, jak byś się domyślał, czy ją używasz. Z semantycznego punktu widzenia jest to po prostu tablica 'bool'. – LukeH