Purpose of this page: To collate our knowledge about the facilities provided by Tcl to work with binary data, for example to talk to other applications using a binary protocol for exchanging information and commands.
The main facility is the binary command with its subcommands to dissect (scan) and join (format) binary data into/from standard tcl values (strings, integers, lists, et cetera).
To exchange the binary information with other applications all of the facilities of the I/O system are at our fingertips and ready to be used. But note:
On news:comp.lang.tcl , Mac Cody and Jeff David write:
Mac Cody wrote:
> Here is a simple example that > first writes binary data to a file and then reads back the > binary data: > > set outBinData [binary format s2Sa6B8 {100 -2} 100 foobar 01000001] > puts "Format done: $outBinData" > set fp [open binfile w]
Important safety tip. When dealing with binary files you should always do:
fconfigure $fp -translation binary
I got bit hard on this one once when my \x0a and \x0d bytes got translated.
> puts -nonewline $fp $outBinData > close $fp > set fp [open binfile r] fconfigure $fp -translation binary > set inBinData [read $fp] > close $fp > binary scan $inBinData s2Sa6B8 val1 val2 val3 val4 > puts "Scan done: $val1 $val2 $val3 $val4" > Jeff David
See Binary representation of numbers and Dump a file in hex and ASCII for examples of usage.