Pergunta

Estou tentando escrever uma personalização no Lyris ListManager (10.2). O idioma é TCL, sobre o qual sei muito pouco. Precisamos codificar um valor como Base64 (ou realmente qualquer coisa que ofusque um parâmetro de tentativa de consulta), mas não consigo descobrir como. Existe um comando nativo do TCL para fazer isso?

Foi útil?

Solução

Seguindo o seu problema para usar o pacote Base64, você pode usar esses pequenos procs para converter seus dados em hexadecimal e voltar. Requer 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 você realmente precisar de base64, pode simplesmente copiar/colar todo o arquivo base64 da distribuição tcllib http://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/ no seu código (remova a linha "Pacote fornece")

Outras dicas

A existência de http://tcllib.sourceforge.net/doc/base64.html parece indicar que não há funções nativas. Você pode copiar a fonte e adicioná -la às suas modificações.

% 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 você tiver a capacidade de carregar bibliotecas TCL (pacotes/módulos) em seu ambiente, você pode simplesmente usar o Tcllib implementação. Foi isso que Vinko Vrsalovic estava mostrando o comando em sua resposta.

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

Se fosse bom o suficiente para codificar em hexadecimal, você pode usar o binário Comando o seguinte:

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top