Pregunta

Estoy intentando escribir una personalización en Lyris ListManager (10.2). El lenguaje es TCL, que sé muy poco. Necesitamos para codificar un valor como base 64 (o en realidad, cualquier cosa que ofusca un parámetro de cadena de consulta), pero me parece que no puede encontrar la manera. ¿Hay un nativo de comandos de TCL para hacer esto?

¿Fue útil?

Solución

A raíz de su problema de usar el paquete de base 64 puede utilizar estos pequeños procsos para convertir sus datos en hexadecimal y la espalda. Requiere 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 realmente necesita base 64 puede simplemente copiar / pegar el archivo de base 64 de la distribución tcllib http://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/ en su código (quitar el "paquete proporciona" línea)

Otros consejos

La existencia de http://tcllib.sourceforge.net/doc/base64.html parece indicar que no hay funciones nativas. Se podría copiar el código fuente y añadirlo a sus modificaciones.

% 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 usted tiene la capacidad de cargar las bibliotecas Tcl (paquetes / módulos) en su entorno, puede usar simplemente aplicación Tcllib . Eso es lo que Vinko Vrsalovic estaba mostrando el comando de en su respuesta.

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

Si sería lo suficientemente bueno para codificar solo en hexadecimal, se puede utilizar el comando binario como sigue:

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top