有没有人发布了一个更强大的.NET BitArray?

12

在尝试使用.NET BitArray类来满足我的需求后,我决定在网上寻找更强大的开源或商业替代品。令我惊讶的是,我找不到一个替代品。我看到各种建议扩展方法或解决BitArray功能限制的方法,但没有任何类似于BitArray替代品的东西。

我们所有人是否都在重新发明轮子,通过扩展或替换BitArray?

理想情况下,替代品应该有以下一些特性:

  1. 实现 IList<bool> 而不仅仅是 ICollection

  2. 可以进行类型转换,如int(用于32位BitArrays),bool(用于一位BitArrays),double等。

  3. 实现像ToArray这样的方法,产生一个字节数组。它可以为字节顺序参数化。因为BitArray可以从构造函数中的字节数组参数构造,所以能够返回byte数组就像对称性良好。

  4. 能够从中提取子BitArray。例如,从111101这样的数组中,你可以提取1到4位,生成一个新的BitArray 1110。

  5. 具有位移运算符。

  6. 处理无限长度的位(就像BitArray一样),但仍然可以转换为有限类型,如int,就像你可以将long强制转换为int一样。

  7. ?__ 我敢打赌人们的愿望清单上还有很多其他项目。

您是否知道任何开源或商业实现?如果是开源的,最好有非互惠许可证,如Apache、MIT或Ms-Pl。


你的问题正是我正在思考的。这个话题有什么最新进展吗? - Martin
1个回答

5
也许您正在寻找 System.Numerics 命名空间中的 BigInteger?它似乎可以完成您所需的任何操作。

2
我认为他正在寻找与BitArrays特定相关的内容。 - bbosak
2
@IDWMaster:BigInteger 类可以让你完成大约 70% 的工作,包括位移操作。其余的 30% 可以通过一些精心编写的扩展方法来实现。 - Robert Harvey
@Tejs,我之前不知道BigInteger。起初,我在想这个回复的相关性,但后来我发现它确实符合我的大部分(但绝对不是全部)标准。由于它与BitArray并不完全类似,所以我需要研究字节序问题。感谢您的回复。 - Dale Barnard
@ Dale: 字节序是组成整数的字节的排序方式。一个位数组怎么会有字节序呢? - Tergiver
@Tergiver,我的一个标准是能够将位数组转换为字节数组,因此存在字节序问题。 - Dale Barnard
为了跟进,我尝试使用BigInteger,但因为没有BigUnsigned版本而放弃了。BigInteger会在正数前面填充一个零,以防止它看起来像是二进制补码。这使得位操作变得非常复杂,以至于我放弃了它并回到了操作字节数组。 - Dale Barnard

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接