我正在尝试以二进制格式(单浮点数)保存数字列表 但是Tcl无法正确保存它,当我从vb.net读取文件时我无法获得正确的数字
set outfile6 [open "btest2.txt" w+]
fconfigure stdout -translation binary -encoding binary
set aa {}
set p 0
for {set i 1} {$i <= 1000 } {incr i} {
lappend aa [expr (1000.0/$i )]
puts -nonewline $outfile6 [binary format "f" [lindex $aa $p]]
incr p
}
close $outfile6
答案 0 :(得分:0)
Tcl无法正确保存
您的代码段中有两个小故障:
lindex
周围的嵌套命令评估缺少的括号(请参阅我的评论):[lindex $aa $p]
fconfigure
而不是stdout
fconfigure $outfile6 -translation binary
在修复此问题之后,以下对我有用:
set outfile6 [open "btest2.txt" w+]
fconfigure $outfile6 -translation binary
set aa {}
set p 0
for {set i 1} {$i <= 1000 } {incr i} {
lappend aa [expr (1000.0/$i )]
puts -nonewline $outfile6 [binary format "f" [lindex $aa $p]]
incr p
}
close $outfile6
您的摘要对我来说似乎过于复杂。循环构造。简化为:
[scan %f $value]
而不是[expr]
显式地将值转换为浮点表示形式?f*
)来处理多个值:[binary format "f*" $aa]
p
,请使用[lindex $aa end]
;或者最好使用循环变量来保存添加的单个元素(而不是再次从列表中收集元素)。-translation binary
暗示-encoding binary