我正在使用一个 tcl 脚本,它获取电影文件跟踪并将其转换为二进制文件,由 ns-2 中的应用程序代理进一步使用。这是将电影文件跟踪转换为二进制文件的脚本的代码片段:
set original_file_name Verbose_Silence_of_the_Lambs_VBR_H263.dat
set trace_file_name video.dat
set original_file_id [open $original_file_name r]
set trace_file_id [open $trace_file_name w]
set last_time 0
while {[eof $original_file_id] == 0} {
gets $original_file_id current_line
if {[string length $current_line] == 0 ||
[string compare [string index $current_line 0] "#"] == 0} {
continue
}
scan $current_line "%d%s%d" next_time type length
set time [expr 1000*($next_time-$last_time)]
set last_time $next_time
puts -nonewline $trace_file_id [binary format "II" $time $length]
}
close $original_file_id
close $trace_file_id
但是当我进一步使用这个创建的 video.dat 文件来生成应用程序代理使用的流量时,我得到了以下错误:
Bad file siz in video.dat
Segmenatation fault
请对此有所收获。代码中二进制格式“II”的含义是什么。因为我没有在 tcl-binary(n) 文档中找到它,或者它已经过时并且现在不受支持。