Der allgemeine Ansatz besteht darin, den Quellpuffer so effizient wie möglich zu lesen und ihn auf dem Weg zum Schreiben des Zielpuffers nach Bedarf zu verschieben.
Sie müssen keine Byte-Operationen ausführen, Sie können immer die Quelle lesen long
für den Großteil der Operation ausgerichtet, indem Sie bis zu drei Bytes am Anfang und in ähnlicher Weise behandeln das Ende, da Sie nicht versuchen sollten über die angegebene Quellpufferlänge hinauslesen.
Von den gelesenen Werten verschieben Sie wie erforderlich, um die gewünschte Bitausrichtung zu erhalten und fertige Bytes zum Schreiben an das Ziel zusammenzusetzen. Sie können auch die gleiche Optimierung von Schreibvorgängen auf die am weitesten ausgerichtete Wortgröße durchführen.
Wenn Sie in der Quelle nach einem Komprimierungstool oder einer Bibliothek suchen, die umfangreiche Tokens mit variabler Breite verwendet (zlib, MPEG, TIFF und JPEG), werden Sie wahrscheinlich Beispielcode finden, der eine Eingabe behandelt oder Ausgabepuffer als ein Strom von Bits, der einige Implementierungsideen zum Nachdenken haben wird.
Und Sie möchten dies warum tun? –
@Adam: es passiert! – SamB
Ya was @SamB sagte. Ich arbeite mit einem Low-Memory-System und habe einige dicht gepackte Daten. Auch wenn es keinen Sinn ergibt, hatte ich immer noch Lust, die Frage zu stellen. – Ryu