Tcl: Wie kann ich zwei binäre Werte verketten?

298
Fisher

Sie möchten zwei binäre Werte verketten, um einen 16-Bit-Wert zu erhalten und in einer Datei speichern.
Das erste Binärformat ist 6 Bit konstant 000111, das zweite Binärzeichen beginnt mit 0 und wird für jede Schleife um 1 erhöht.

#!/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 

Tcl: Wie kann ich zwei binäre Werte verketten?

Erwartete Leistung: 1C00 1C01 1C02 ...

0

2 Antworten auf die Frage

0
Fisher
#!/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 

enter image description here

0
glenn jackman

Bei binären Daten möchten Sie möglicherweise bitweise arithmetische Operatoren verwenden:

$ 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 
Bitte beachten Sie, dass das Format% b Tclsh8.6 benötigt. Fisher vor 5 Jahren 0