Da ich relativ oft Binär Strings verwende, um Bilder, Sounds, etc. direkt vom Speicher zu lesen, habe ich kleines Tool dazu geschrieben, das eine Datei in einen Base64 String umwandelt und gleich als Funktion bereit stellt.
Optional kann man den Base64 String vorher mit der Build-In Funktion (ntdll.dll) oder mit LZMAT komprimieren, um Platz zu sparen!
Danke an
trancexx für die LZNTCompress / LZNTDecompress und _Base64Decode() Funktionen
Ward für die _Base64Encode() / LZMAT und MsgBoxEx() Funktionen
wraithdu für die Beseitung und Erweiterung des Codes
Tipp: für größere Dateien würde ich die Kompression auf Standard setzen, damit die Kompression schneller geht -> rechte Maustaste auf das Label Compression -> Compression Strength -> Standard
Die Bedienung sollte selbsterklärend sein.
Download: File to Base64 String Code Generator v1.20 Build 2020-06-05 (AutoIt Version 3.3.13.19 oder höher benötigt!)
Source Code auf Pastebin.com
Für Anwendungsbeispiele siehe Post#6.
Über Kritik würde ich mich wie immer freuen.
Gruß,
UEZ
Historie:
Spoiler anzeigen
2011-10-29: kleine Änderungen an der GUI + schnelleres Erstellen des Binär Strings
2011-10-30: Code auf Base64 umgestellt + DEP Check + Bugs gefixt
2011-10-31: noch ein Bug gefixt (Absturz bei 0 Kb Dateien) + Modifikationen an dem GUI Code
2011-11-01: und wieder ein Bug gefunden (leere Inhalt konnte gespeichert werden)
2011-11-11: Multi File Auswahl hinzugefügt
2011-11-12: Funktionsnamen Bug beseitigt (danke Oscar!)
2011-11-14: kleine Modifikationen am Code
2011-11-15: Version 1.0 veröffentlicht und Name geändert
2011-11-16: Komprimierung wird nun automatisch abgeschaltet, wenn die komprimierte Größe größer als die Original Größe ist. Farben können nun über die Ini Datei gesteuert werden
2011-11-17: Credits Funktion hinzugefügt
2011-11-21: ein Sleep(50) in eine Schleife hinzugefügt, da ansonsten die CPU unnötig schwitzt
2012-01-14: Funktion Load_BMP_From_Mem() aktualisiert
2012-04-11: kleinere Bugs in Funktion Load_BMP_From_Mem() Funktion gefixed und Funktion hinzugefügt den generierten Code direkt in SciTE einzufügen
2012-04-17: Popup Menu hinzugefügt, damit man u.a. den selektierten Bereich in die Zwischenablage kopieren kann
2012-04-24: Kompressionseinstellung wird jetzt auch in der Ini Datei gespeichert
2012-05-02: Drag'n'Drop von Files auf die GUI hinzugefügt + Kompressionseinstellung wird auch in der Ini Datei gespeichert
2012-05-03: Ordner konnten auch per Drag'n'Drop auf die GUI hinzugefügt -> fixed
2012-05-18: Kopieren des generierten Codes in das Clipboard mit RMB im Editfeld + Kompressionsstatistik kann jetzt wieder angezeigt werden, wenn Label Multiselect mit der LMT gedrückt wird + Code zum Speichern des Binärstrings hinzugefügt
2012-05-31: Fehler in der Drag'n'Drop Funktion behoben
2012-07-23: einige interne Modifikationen
2012-08-29: Bug gefixt in der Multi Selektion Kompression. Binär String wurde nicht komprimiert übergeben, somit war der Binärstring unbrauchbar!
2012-10-12: Drag'n'Drap von einem Ordner war möglich -> ist jetzt gefixt
2012-10-13: "New Length" Wert wurde nicht gelöscht, wenn die Kompression nicht aktiviert wurde
2013-02-19: Buffersize als Aufrufparameter für die Funktion _WinAPI_LZNTDecompress() hinzugefügt.
2013-03-25: Option für die Pfadangabe in generierter Code Funktion hinzugefügt und @LF durch @CRLF ersetzt, kritischen Fehler behoben
2014-05-01: LZMAT Kompression hinzugefügt + einige interne Modifikationen
2014-05-30: Statistik Werte wurden den Umständen falsch angezeigt
2014-06-01: einige Fehler in der Checkbox Logik behoben, was dazu führen konnte, dass der Base64 String nicht zur Entpackfunktion passt
2014-06-05: kleine optische Änderungen
2014-08-01: einige Bugs wurden von wraithdu bezüglich LZMT Dekompression in x64 Modus und noch andere Code Segmente gefixt.
2014-08-02: Option hinzugefügt, um kontinuierliche Funktion Namen zu erzeugen, wenn Multi-Dateien ausgewählt werden, um Funktionen einfach innerhalb Skript behandeln - danke an Oscar für die Idee!
2014-11-05: Bug gefixt, wenn LZMAT selektiert wurde, war LZNT immer noch selektiert.
2014-11-11: hatte vergessen in der ASM_DecompressLZMAT Funktion einige Variable zu deklarieren, was bei Benutzung von AutoItSetOption("MustDeclareVars", 1) zu Fehlern führt
2015-01-20: Output Source Code ein wenig modifiziert
2020-06-05: Code aktualisiert, damit der Code mit der neusten AutoIt Version sauber läuft. Keine neuen Features hinzugefügt!