Author: Pat Thoyts <firstname.lastname@example.org> State: Final Type: Project Vote: Done Created: 03-May-2008 Post-History: Keywords: base64,uuencode,hex,transfer encoding Tcl-Version: 8.6 Tcl-Ticket: 1956530
This TIP extends the binary command with implementations in C of commonly used binary encodings. In particular the base64 encoding is implemented but the Tcl ensemble scheme  can be used to provide simple extension of the implemented formats.
The binary command ensemble will be extended to include two new subcommands, encode and decode. Each subcommand will accept two arguments. The first is the name of an encoding format and the second is the data to be operated upon.
binary encode format ?-option value ...? data
binary decode format ?-option value ...? data
In keeping with the nature of the binary command, the data argument is treated as a byte array. This means that users should ensure their data is already in a suitable character encoding before applying a binary encoding. This is already a requirement for other implementations of this functionality (e.g. the tcllib and Trf packages).
The initial set of binary encodings consists of base64, uuencode and hex. The implementation of the encode and decode subcommands will make use of the Tcl ensemble command mechanism () and will therefore be extensible via the ensemble mechanism.
A patch against the Tcl HEAD (8.6) is located at http://sf.net/tracker/?func=detail&aid=1956530&group\_id=10894&atid=310894
This document has been placed in the public domain.