Wie wäre es mit einer kleinen Klasse?
Delphi-Quellcode:
Type
TBits = Class
public
constructor Create (data : TBytes);
function GetBits (BitFrom, BitTo : Integer) : TBytes;
End;
Und 'GetBits' macht nichts anderes, als die Bytes aus data von Index BitsFrom/8-BitsTo/8 zu kopieren und um BitsFrom mod 8 zu shiften (den Überlauf vom folgenden Byte einmaskieren), und vom letzten Byte müssen die Bits (BitsTo mod 8 - BitsFrom mod 8) weggeschnippelt werden.
Irgendwie so jedenfalls. Mit Papier und Stift sind die Shiftoffsets und das letzte Maskieren doch schnell zusammengezählt.
Alternativ (aber saulangsam) überführt man den Byte-Stream in ein Array of Boolean und bei der Abfrage erzeugt man aus dem Bits dann wieder einen Byte-Stream.