Lauflängenkodierung

Aus C64-Wiki
Wechseln zu: Navigation, Suche

RLE (Run Length Encoding, deutsch: Lauflängenkodierung) ist die Bezeichnung für einen Algorithmus, der beim Abspeichern von Dateien beliebiger Art (vorzugsweise aber Grafik bzw. Bilder) dafür sorgen soll, dass die Dateien möglichst wenig Platz auf dem Datenträger einnehmen (andere Algorithmen siehe Kompression).

Der Algorithmus ersetzt Abfolgen immer gleicher Bytes in einer Datei durch einen definierten Stellvertreter (Indikator), dem ein Zähler beigeordnet ist. Prinzip also: Statt einer Folge von n Bytes mit dem Wert v wird ein Indikator i auf den Datenträger geschrieben und - da sich natürlich auch andere Werte wiederholen können - einmal das zu ersetzende Byte selbst (v). Schließlich folgt der Zähler (n), der angibt, wie oft das Byte wiederholt werden soll: i-n-v oder auch i-v-n.

Der Aufbau einer solchen Packsequenz ist bei den Anwendungsprogrammen also nicht einheitlich. Immer beginnt eine Sequenz mit dem Indikator-Byte (z.B. in GoDot lautet dieses $AD). Der Zähler und die Angabe des zu zählenden Bytes sind in Anwendungen mal so, mal so angeordnet (in GoDot kommt zuerst der Zähler, so dass eine Folge von 100 Nullen die Packsequenz $AD $64 $00 ergäbe, GoDot packt also i-n-v). Üblicherweise ist eine Sequenz drei Bytes lang, es gibt aber auch Anwendungen, die bestimmte Werte mit einer Zwei-Byte-Sequenz behandeln (GeoPaint, Diashow Maker, Amica Paint u.a.), manche Formate verwenden eine Sequenz von vier Bytes (Pagefox) und einige wenige gar ganz komplizierte, unterschiedlich lange Sequenzen (Truepaint). Ebenso üblich ist es, Folgen gleicher Bytes erst dann zu packen, wenn sie nicht kürzer sind als die Packsequenz (sonst könnte im ungünstigsten Fall die gepackte Datei umfangreicher sein als die ungepackte). GoDot komprimiert also ab drei gleichen Bytes, Pagefox ab vier.

RLE gehört zu den einfachen Packalgorithmen. Neben der technisch nicht sehr aufwändigen Implementierung hat er den Vorteil, dass das Packen aber insbesondere auch das Entpacken schnell vor sich geht. Werden Daten während der Benutzung eines Programms gepackt oder entpackt, ist für den Nutzer dadurch kein Geschwindigkeitsverlust bemerkbar: Bei Amica Paint beispielsweise ist der Entpackvorgang nach dem Laden eines gepackten Bildes quasi nicht zu bemerken, ebenso kann man im Ultraflash-Noter V2 durch die Seiten blättern, ohne dass die Entpackzeit der Textseiten mit den Blinkeffekt-Daten auffällt.

Weblinks[Bearbeiten]

WP-W11.png Wikipedia: Lauflängenkodierung
WP-W11.png Wikipedia: Datenkompression
WP-W11.png Wikipedia: Bildkompression