【问题标题】:Use .NET BigInteger as bit field使用 .NET BigInteger 作为位域
【发布时间】:2014-03-30 16:14:11
【问题描述】:

我想使用System.Numeric.BigInteger 作为位域。 我有 1 - 2^255 范围内的标志。 编写自定义容器是否有任何性能原因(内存或速度),或者我可以为此使用BigInteger

【问题讨论】:

  • BigInteger 是不可变的,因此任何更改都需要分配一个新的。但除非您在紧密循环中使用它或使用较大的值(远大于 256 位),否则这无关紧要。
  • BitArray 类,专为此而设计。使用List<byte> 也很容易。如果你愿意牺牲内存,List<bool> 是另一种选择。

标签: c# .net performance memory biginteger


【解决方案1】:

您可以使用BitArray,它为这种存储量身定制,然后 如果您需要存储,您可以将其存储为一个字符序列,或者使用其他一些序列化选项。

【讨论】:

  • 那个课有点奇怪。出于某种原因,它没有实现IList,也没有对其进行修改以添加通用接口。我希望它能够实现IList<bool>
  • @CodesInChaos:可能它的想法是处理比特值的。在 CLR 中,当 ms 想要显示这种类型的用例时,通常会停止从 IEnumerable 或最多从 ICollection 实现它。
猜你喜欢
  • 1970-01-01
  • 2019-09-12
  • 2017-08-27
  • 1970-01-01
  • 1970-01-01
  • 2012-08-02
  • 2011-03-04
  • 1970-01-01
  • 2011-06-17
相关资源
最近更新 更多