dedlfix: Binärdateien

Beitrag lesen

Hi!

NUL ist ein Byte mit dem Wert 0. [...]
Ist NUL dann gleichbedeutend mit einem (bspw.) Float, der den Wert 0 enthält?

Eigentlich nicht. In ASCII (und darauf aufbauenden Zeichensätzen) haben die Steuerzeichen 0..0x1F Namen und das Zeichen an Position heißt NUL. Außerdem gilt (zumindest für ASCII) 1 Zeichen = 1 Byte, und das Byte mit dem Wert 0 wird daraufhin auch als NUL bezeichnet. Ein Float ist aber je nach Ausführung 4 oder 8 Byte und die interne Darstellung von Zahlen etwas komplexer. Du kannst von Float-0 auf NUL und zurück in einer Hochsprache nur dann kommen, wenn du einen Typecast vornimmst.

Und: Blöde Frage evtl., aber positioniert @ auf eine Byteposition oder auf eine Bitposition?

Byte.

Sind die Stellenangaben überhaupt immer Bytelängen oder Bitlängen? Ich vermute eher Byte, was dann bedeuten würde, dass es die kleinste Einheit ist (die zu adressieren geht)?

Byte. Ja, das ist die kleinste Einheit aus Sicht des Pack-Formats. Auf Bits zu gehen wäre ziemlich ungünstig. Üblicherweise orientiert sich ja alle Verarbeitung und alle Datentypen an Byte-Grenzen, sind also Vielfache von 8 Bit. Auch Dateien werden byteweise geschrieben und gelesen. Wenn du jetzt einen Wert mit zum Beispiel 3 Bits dazwischenschiebst, musst du nachfolgend bei 8-Bit-Strukturen immer "halbe" Bytes zusammenstückeln. Es ist in der Verarbeitung deutlich einfacher für einzelne boolsche Werte ein ganzes Byte zu "verschwenden", als mit einem byteorientierten System Bits einzeln zu anzusprechen.

Lo!