Frage

Ich versuche, eine Anpassung in Lyris ListManager (10.2) zu schreiben. Die Sprache ist TCL, von der ich sehr wenig weiß. Wir müssen einen Wert als Basis64 (oder wirklich alles, was einen QueryString -Parameter verschleiert) codieren, aber ich kann nicht herausfinden, wie. Gibt es einen Befehl, der in TCL stammt, um dies zu tun?

War es hilfreich?

Lösung

Befolgen Sie Ihr Problem, um das Base64 -Paket zu verwenden, mit diesen kleinen Procs, um Ihre Daten in Hex und zurück zu konvertieren. Erfordert tcl> 8

proc BIN2HEX { text }   { binary scan $text H* result; return $result }
proc HEX2BIN { hex }    { return [binary format H* $hex] }
set hex [BIN2HEX $yourText]
set textAgain [HEX2BIN $hex]

Wenn Sie Base64 wirklich benötigen, können Sie einfach die gesamte Base64 -Datei aus der TCllib -Verteilung kopieren/einfügen http://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/ in Ihren Code (entfernen Sie die Zeile "Paket")

Andere Tipps

Die Existenz von http://tcllib.sourceforge.net/doc/base64.html Scheint darauf hinzudeuten, dass es keine nativen Funktionen gibt. Sie können die Quelle kopieren und zu Ihren Änderungen hinzufügen.

% base64::encode "Hello, world"
SGVsbG8sIHdvcmxk

% base64::encode [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6
eHl6eHl6eHl6
% base64::encode -wrapchar "" [string repeat xyz 20]
eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6eHl6

# NOTE: base64 encodes BINARY strings.
% set chemical [encoding convertto utf-8 "C\u2088H\u2081\u2080N\u2084O\u2082"]
% set encoded [base64::encode $chemical]
Q+KCiEjigoHigoBO4oKET+KCgg==
% set caffeine [encoding convertfrom utf-8 [base64::decode $encoded]]

Wenn Sie TCL -Bibliotheken (Pakete/Module) in Ihre Umgebung laden können, können Sie einfach die verwenden Tcllib Implementierung. Das zeigte Vinko Vrsalovic den Befehl in seiner Antwort.

% package require base64
2.4
% base64::encode bob
Ym9i

Wenn es gut genug wäre, nur in hexadezimal zu codieren, können Sie die verwenden binär Befehl wie folgt:

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top