Domanda

Sto cercando di scrivere una personalizzazione a Lyris ListManager (10.2). Il linguaggio è TCL, che so molto poco. Abbiamo bisogno di codificare un valore come base64 (o realmente, tutto ciò che offusca un parametro querystring), ma io non riesco a capire come. C'è un comando nativo di TCL per fare questo?

È stato utile?

Soluzione

In seguito il problema di utilizzare il pacchetto Base64 è possibile utilizzare questi piccoli proc per convertire i dati in esadecimale e viceversa. Richiede 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]

Se si ha realmente bisogno Base64 solo è possibile copiare / incollare l'intero file Base64 dalla distribuzione tcllib http://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/ nel codice (rimuovere il "pacchetto fornisce" linea)

Altri suggerimenti

L'esistenza di http://tcllib.sourceforge.net/doc/base64.html sembra indicare che ci sei non funzioni native. Si potrebbe copiare il codice sorgente e aggiungerlo ai vostri modifiche.

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

Se avete la possibilità di caricare le librerie Tcl (pacchetti / moduli) nel vostro ambiente, si può semplicemente utilizzare il Tcllib attuazione. Questo è ciò che Vinko Vrsalovic stava mostrando il comando dalla nella sua risposta.

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

Se sarebbe sufficiente per codificare solo in formato esadecimale, è possibile utilizzare il comando binary come segue:

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top