public static BitArray ReadFrom(BinaryReader reader, int count, string elementName) { BitArray bitArray = new BitArray(count); byte[] array = reader.ReadBytes((bitArray.Length + 7) / 8, elementName); for (int i = 0; i < count; i++) { bitArray.Set(i, (array[i / 8] & BitArrayReaderWriter.BitArrayBitValue(i)) != 0); } return(bitArray); }
public static void WriteTo(BinaryWriter writer, BitArray bitArray) { byte[] array = new byte[(bitArray.Length + 7) / 8]; for (int i = 0; i < bitArray.Length; i++) { if (bitArray.Get(i)) { byte[] array2 = array; int num = i / 8; array2[num] |= BitArrayReaderWriter.BitArrayBitValue(i); } } writer.Write(array); }