Nachdem ich mich bemüht hatte, die .NET BitArray-Klasse für meine Bedürfnisse zu nutzen, entschied ich mich, nach einer robusteren Open-Source- oder kommerziellen Version im Internet zu suchen. Zu meiner Überraschung kann ich keinen einzigen finden. Ich sehe verschiedene Vorschläge für Erweiterungsmethoden oder Möglichkeiten zur Begrenzung der BitArray-Funktionalität, aber nichts, was einem BitArray-Ersatz ähnelt.
Erfinden wir das Rad neu, indem wir BitArray erweitern oder ersetzen?
Idealerweise hätte ein Ersatz einige / alle dieser Merkmale:
Implementiert IList<bool>
und nicht nur ICollection
.
Kann auf verschiedene andere Typen wie int (für bis zu 32-Bit-BitArrays), bool (für Ein-Bit-BitArrays), double usw. umwandeln.
Implementiert eine ToArray-Methode, die ein Byte-Array liefert. Es kann für Endianess parametrisiert werden. Da BitArray aus einem Byte-Array-Parameter im Konstruktor konstruiert werden kann, scheint es eine gute Schließung zu sein, um es zu einem Byte-Array zurückzugeben.
Möglichkeit, Sub-BitArrays daraus zu extrahieren. Zum Beispiel könnten Sie aus einem Array wie 111101 die Bits 1 bis 4 extrahieren, was ein neues BitArray von 1110 ergibt.
Bitverschiebungsoperatoren.
Verarbeitet unbestimmte Bitlängen (wie BitArray), kann aber immer noch auf begrenzte Typen wie int umwandeln, genau wie Sie ein long in ein int umwandeln können, wenn Sie wissen, dass es passt.
? __ Ich wette, es gibt viele andere Dinge auf den Wunschzettel der Menschen.
Kennen Sie Open-Source- oder kommerzielle Implementierungen? Wenn es Open Source ist, wäre es schön, eine nichtreziproke Lizenz wie Apache, MIT oder Ms-Pl zu haben.
Vielleicht suchen Sie im System.Numerics-Namespace nach BigInteger ? Es sieht so aus, als könnte es tun, was immer du verlangst.