1

Lyris ListManager (10.2) でカスタマイズを作成しようとしています。言語はTCLで、私はほとんど知りません。値を base64 (または実際には、クエリ文字列パラメーターを難読化するもの) としてエンコードする必要がありますが、その方法がわかりません。これを行うための TCL 固有のコマンドはありますか?

4

4 に答える 4

2

Tclライブラリ(パッケージ/モジュール)を環境にロードする機能がある場合は、Tcllib実装を使用できます。それは、ヴィンコ・ヴルサロヴィッチが彼の応答でコマンドを示していたものです。

% package require base64
2.4
% base64::encode bob
Ym9i
于 2009-12-02T19:01:01.487 に答える
2

base64パッケージを使用する際の問題に続いて、これらの小さなプロシージャを使用して、データを16進数に変換したり元に戻したりすることができます。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]

base64が本当に必要な場合は、base64ファイル全体をtcllibディストリビューションhttp://sourceforge.net/projects/tcllib/files/tcllib/1.11.1/からコードにコピーして貼り付けることができます(「packageprovides」行を削除してください)。 )。

于 2009-12-03T10:32:51.910 に答える
2

http://tcllib.sourceforge.net/doc/base64.htmlの存在は、ネイティブ関数がないことを示しているようです。ソースをコピーして、変更に追加できます。

% 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]]
于 2009-12-02T15:59:29.380 に答える
1

16 進数でエンコードするだけで十分な場合は、次のようにバイナリコマンドを使用できます。

% set query "Hello, world"
Hello, world
% binary scan $query H* hexquery
1
% puts $hexquery
48656c6c6f2c20776f726c64
于 2009-12-03T08:54:28.827 に答える