18、Expect 脚本编程:字节处理、奇偶校验与调试技巧

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 的位

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值