After struggling to make the .NET BitArray class work for my needs, I decided to look for a more robust open-source or commerical one on the web. To my surprise, I can't find a single one. I see various suggestions for extension methods or ways to work around limits to BitArray functionality, but nothing resembling a BitArray replacement.
Are we all reinventing the wheel by extending or replacing BitArray?
Ideally, a replacement would have some/all of these features:
Implements
IList<bool>
rather than justICollection
.Can cast to various other types such as int (for up to 32-bit BitArrays), bool (for one-bit BitArrays), double, etc.
Implements a ToArray type of method that yields a byte array. It may be parameterized for endianness. Since BitArray can be constructed from a byte array parameter in the constructor, it seems like good closure to be able to return it to a byte array.
Ability to extract sub-BitArrays from it. For example, from an array like 111101, you could extract bits 1 to 4, yielding a new BitArray of 1110.
Bit shifting operators.
Handles indefinite lengths of bits (like BitArray does), but can still cast to limited types like int, just like you can cast a long to an int if you know it will fit.
?__ I bet there are plenty of other items on people's wish lists.
Do you know of any open-source or commercial implementations out there? If it's open source, it would be nice to have a nonreciprocal license such as Apache, MIT, or Ms-Pl.