#!/usr/bin/tclsh set output_file "output.txt" set data_number "10" set output_fpt [open ./$ w] for {$x < $data_number} { set q [expr ($x + (7 * (2 ** 10))) * (2 ** 16)] binary scan [binary format I $q] B16 var_q set data_q [binary format B16 $var_q] fconfigure $output_fpt -translation binary puts -nonewline $output_fpt $data_q } close $output_fpt
Tcl: как объединить два двоичных значения?
269
Fisher
Хотите объединить два двоичных значения, чтобы получить 16-битное значение и сохранить в файл.
Первый двоичный файл имеет постоянную 6 битов 000111
, второй двоичный файл начинается с 0 и увеличивается на 1 для каждого цикла.
#!/usr/bin/tclsh set output_file "output.dat" set data_number "10" set output_fpt [open ./$ w] for {$x < $data_number} { set y [expr $x * (2 ** 22)] binary scan [binary format I $y] B32 var set data [binary format B6B12 000111 $var] fconfigure $output_fpt -translation binary puts -nonewline $output_fpt $data } close $output_fpt
Ожидаемый результат: 1C00 1C01 1C02 ...
2 ответа на вопрос
0
Fisher
0
glenn jackman
С двоичными данными вы можете использовать побитовые арифметические операторы:
$ tclsh % set fixed 0b000111 0b000111 % for {$i < 4} { set n [expr {($fixed << 2 | $i) << 8}] puts [format {%d => %d = %b = %x} $i $n $n $n] } 0 => 7168 = 1110000000000 = 1c00 1 => 7424 = 1110100000000 = 1d00 2 => 7680 = 1111000000000 = 1e00 3 => 7936 = 1111100000000 = 1f00
Обратите внимание, что формат% b нуждается в tclsh8.6.
Fisher 6 лет назад
0
Похожие вопросы
-
1
Как установить пакет Tcl?
-
0
сценарий tclsh в разрешениях сценария sh
-
1
Совместимость шифрования между TCL и openssl
-
-
0
есть ли dll для tls, которые могут работать на winows?
-
0
ANSYS: неизвестная ошибка при запуске программы
-
1
Средство Intel IPMI не работает в WinPE 10 64-bit
-
1
Как установить cmdline на сервер Oracle Linux