Zitat von
Sebastian Nintemann:
Zitat:
Also diese Variante würde zwar das Schreiben in eine Datei vereinfachen, aber beim Lesen müsste man dann immer noch Bits shiften, wenn wie im Beispiel nur 3 Bit und dann ein Integer (32 Bit) in der Datei stehen.
Gerade eben nicht
Du liest beispielsweise das erste byte der Datei, von der meinetwegen die ersten drei bits Informationen enthalten. Welche bits gesetzt sind kann man leicht über Bitmasken prüfen. Danach liest du ganz normal über die Read Methoden weiter aus dem Stream (beispielsweise 4 byte als Integer). Da muss dann eben nicht geshiftet werden. Du benutzt einfach die entsprechenden Methoden und den Schreib/Lese Offset den dir die Streamklasse (falls du Streams benutzt) zur verfügung stellt.
Ich wollte damit eigentlich sagen, dass deine Vorgehensweise nur für das Schreiben solcher Dateien gut geeignet ist. Wenn du aber ein Byte ausliest, dann wären die ersten drei Bits davon irgendwelche Daten und die restlichen fünf Bits von diesem Byte gehörten schon zum Integer, denn so liegen die Daten ja laut der Beschreibung von stoxx vor
. Wenn du also danach 4 Bytes liest, gehören davon nur noch 27 Bits zum Integer und die restlichen fünf Bits können schon wieder zu irgendwelchen anderen Werten gehören. Also müsste man diese Daten auch erstmal "auseinandernehmen", um sie dann nach der "1-Byte-für-1-Bit"-Methode speichern zu können, da man ja sonst offensichtlich durcheinander kommt mit den verscheidenen Daten.
MfG
Binärbaum