【发布时间】:2013-02-27 17:56:41
【问题描述】:
我正在使用一个 tcl 脚本,该脚本获取电影文件跟踪并将其转换为二进制文件,该文件由 ns-2 中的应用程序代理进一步使用。这是将电影文件跟踪转换为二进制文件的脚本的代码 sn-p:
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) 文档中找到它,或者它已经过时并且现在不受支持。
【问题讨论】:
-
所以我终于做到了。实际上,ns-2 Application/Traffic/Trace 的跟踪文件中的记录包含 2 个网络字节顺序的 32 位整数。第一个整数以微秒为单位给出时间,第二个整数以字节为单位给出数据包大小。 tcl 脚本二进制格式“II”在我阅读时无法将其转换为这种格式。所以我所做的只是编写了一个 C 程序并将电影文件跟踪转换为所需的二进制格式,然后在 ns-2 模拟中使用它并且它工作。
标签: tcl binaryfiles ns2