#!/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: 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
Erwartete Leistung: 1C00 1C01 1C02 ...
2 Antworten auf die Frage
0
Fisher
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
Verwandte Probleme
-
1
Wie installiere ich ein Tcl-Paket?
-
0
Tclsh-Skript innerhalb einer SH-Skriptberechtigung
-
1
Verschlüsselungskompatibilität zwischen TCL und openssl
-
0
Gibt es eine DLL für TLS, die auf Winows laufen kann?
-
0
ANSYS: Unbekannter Fehler beim Programmstart
-
1
Das IPMI-Tool von Intel schlägt in WinPE 10 64-Bit fehl
-
1
So installieren Sie cmdline auf einem Oracle Linux-Server