Page 1 of 1

gpBinEncode - General Purpose Binary Encoding

Posted: 18 Aug 2015, 07:45
by Alibaba
Hey Leute,
ich bin auch mal wieder zurück, habe endlich Urlaub! :D

Da ich in letzter Zeit ein Wenig mit Binärkodierungen "rumgespielt" habe, ist nebenbei eine kleine Hilfsbibliothek entstanden, welche ich hier teilen möchte.
Wie der Name schon sagt, stellt die Bibliothek eine Funktion "gpBinEncode()", welche es ermöglicht jede beliebige Binärkodierung mit festen Quell- und Codewörtern auf serielle Art und Weise (und auf beliebigen Daten) durchzuführen.
Unter Anderem könnte man damit also auch Paritätskodes, Shannon-Fano- oder Huffman-Optimalkodierungen, Hamming-Kodes oder zyklische Kodes realisieren.
Daneben finden sich auch 2 Hilfsfunktionen "gpLoadBinString()" / "gpStoreBinString()" zum Laden und Lesen von binären Daten beliebiger Länge in den/aus dem Speicher. Dies ist vorallem zum Testen des Codes recht nützlich.
Eine weitere Funktion "gpApproxAverageLength()" wird lediglich intern zur Optimierung genutzt. Sie schätzt aus einer gegebenen Code-Tabelle die mittlere Codewortlänge.

Nochmal der komplette Umfang:
gpBinEncode(ByRef sourceData, ByRef encodedData, encodingTable, sourceLength="StrLen", ByRef leftoverData := "omitted", ByRef leftoverLength := "")
gpStoreBinString(ByRef var, binString)
gpLoadBinString(ByRef var, length)
gpApproxAverageLength(encodingTable)

Hier ist die Bibliothek:
gpBinEncode.ahk

Und hier noch 3 Beispiele: (deren tatsächlicher Nutzen in Frage gestellt werden könnte, aber welche die Funktionsweise gut verdeutlichen ;) )
Examples.ahk
Freue mich über jegliches Feedback!
LG, Alibaba

Re: gpBinEncode - General Purpose Binary Encoding

Posted: 18 Aug 2015, 18:13
by Alibaba
Update auf v0.2:
-Funktion approxAverageLength() repariert