Tcl предпочитает читать и записывать текстовые файлы по умолчанию, что означает, что он выполняет ряд преобразований для данных, которые вы оба входите в Tcl и выходите в файл.При работе с двоичными данными вы хотите, чтобы они были отключены.Либо используйте wb
вместо w
в вызове open
(точно так же, как в вызове C stdio fopen()
), либо используйте fconfigure
для перевода канала в двоичный режим после его открытия.
set wf [open "test.bin" wb]
set wf [open "test.bin" w]
# It's the -translation option for historical/backward-compatibility reasons
fconfigure $wf -translation binary
Они эквивалентны;b
делает open
вызов (реализацию) fconfigure
внутри, чтобы установить именно эту опцию.