Delphi-PRAXiS
Seite 2 von 2     12   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi Stream/Datei bitweise lesen + schreiben (https://www.delphipraxis.net/38682-stream-datei-bitweise-lesen-schreiben.html)

Binärbaum 22. Jan 2005 20:09

Re: Stream/Datei bitweise lesen + schreiben
 
Zitat:

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 :wink: . 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

Sebastian Nintemann 22. Jan 2005 20:39

Re: Stream/Datei bitweise lesen + schreiben
 
Zitat:

Zitat von Binärbaum
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.

Genau das wollte ich ja mit meiner Methode verhindern, indem eben ungebrauchte bits zwischen den einzelnen Werten vorkommen können, um nicht vollständig gebrauchte Bytes "aufzufüllen". Ich ging dabei davon aus, dass stoxx die Datei selbst erstellt, also sich die Struktur selbst überlegen kann.

Zitat:

Zitat von stoxx
Aber genau dieses "Begin" Byte ist wahrscheinlich schon 4 -5 Bit zu groß ;)
4 Bit mehr auf 1 000 000 Ticks sind schon 488 kb.

Das ist natürlich auch keine Standardsituation. Wenn man zig Gigabyte Daten hat sollte man sich natürlich schon überlegen, wie man Platz sparen kann. ;) Kommt halt immer auf die Situation an. Ich war jetzt eher von was kleinerem ausgegangen wo ein paar Bits pro Einheit mehr oder weniger nicht auffallen ;)

Viele Grüße,
Sebastian


Alle Zeitangaben in WEZ +1. Es ist jetzt 22:46 Uhr.
Seite 2 von 2     12   

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz