Also ich würde mir als erstes etwas wie einen Bit-Stream Programmieren.
Delphi-Quellcode:
type BitReader = class
contructor create(source: TStream);
/** Gibt die nächsten amount Bits als Ganzzahl zurück. */
function readBits(amount: byte): cardinal;
end;
An dieser Klasse lässt sich dann gut rumoptimieren ohne dein Programm durcheinander zu bringen.
Das mit dem Speichern von Bits als 01-Strings ist das unperformanteste was man machen kann. Nicht nur das String mindestens 8-mal so viel Speicher brauchen als das direkte Arbeiten mit Bits: Meisten Stringoperationen benutzen die Speicherverwaltung und die ist in fast allen Fällen langsam.