Question

Je suis en train d'écrire une personnalisation dans Lyris ListManager (10.2). La langue est TCL, que je connais très peu. Nous avons besoin d'encoder une valeur en base64 (ou vraiment, tout ce qui obscurcit un paramètre querystring), mais je ne peux pas sembler comprendre comment. Yat-il un natif de commande TCL pour le faire?

Était-ce utile?

La solution

Après votre problème à utiliser le package base64 vous pouvez utiliser ces petits procs pour convertir vos données en hexadécimal et le dos. Nécessite 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]

Si vous avez vraiment besoin base64, vous pouvez simplement copier / coller le fichier entier base64 de la distribution de tcllib http://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/ dans votre code

Autres conseils

L'existence de http://tcllib.sourceforge.net/doc/base64.html semble indiquer qu'il n'y a pas de fonctions natives sommes. Vous pouvez copier la source et l'ajouter à vos modifications.

% 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]]

Si vous avez la possibilité de charger des bibliothèques Tcl (packages / modules) dans votre environnement, vous pouvez utiliser simplement la mise en œuvre de tcllib. C'est ce que Vinko Vrsalovic montrait la commande de sa réponse.

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

Si ce serait assez bon pour simplement encoder en hexadécimal, vous pouvez utiliser le commande binaire comme suit:

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top