Expect 脚本编程:字节处理、奇偶校验与调试技巧
1. 字节处理程序
在处理字节数据时,有如下的代码示例:
set x 0
for {set i 0} {$i<4} {incr i} {
set x [expr $x*256]
expect "?" {
scan $expect_out(0,string) %c d
incr x $d
} null
}
return $x
这个程序每次期望接收一个字节。空字节通过 null 关键字匹配,非空字节则使用 "?" 匹配。在每次循环中,会将之前的小计结果左移 8 位(乘以 256),为新字节腾出空间,然后把新字节的值加到当前小计中。由于空字节的值为 0,所以在这种情况下无需进行加法操作,只需完成匹配即可。
虽然这种处理空字节的方式看起来缓慢且笨拙,但实际上 Tcl 是为用户界面进行优化的,在用户界面中处理二进制数据的情况几乎不会出现。允许对空字节进行不同处理的权衡之处在于,它使得 Tcl 的其余部分比其他情况要简单得多。
2. 奇偶校验
奇偶校验是通过修改和检查每个字节中的单个位来进行错误检测的过程。主要有两种基本类型的奇偶校验:
- 奇校验 :字节中 1 的位数为奇数。如果一个字母自然表示时 1 的位数不是奇数,则将最高位强制设为 1。
- 偶校验 :与奇校验相反,字节中 1 的位
超级会员免费看
订阅专栏 解锁全文
8

被折叠的 条评论
为什么被折叠?



