hdlc协议解码的四种方法

本文介绍了四种不同的HDLC协议解码方法,包括基于字符串、按比特流处理、查表法以及按字节构造处理表等,对比了它们的速度与适用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

hdlc协议规定了,在hdlc中不能出现连续的6个1,因为这是hdlc帧的分割标志,因此在编码的时候每遇到5个连续的1就插入0,因此解码时就需要碰到5个连续的1就要去掉后面的0,而在我们的计算机中都是以整数字节描述信息,因此造成了用pc解hdlc的不便。

第一种,使用最原始的方法:将二进制比特流变成字符串的‘0’‘1’序列,然后在这个基础上解码。这种方法采用的是一个字节表示原来的一位,因此直观感最强,适合初学者编写。缺点是要经过两次变换:先将二进制流变成字符串,解码之后再将字符串变成比特流,经过这两次变换导致程序解码速度低,不过如果只是面对一个E1或T1的数据,这种解码方法基本上可以跟得上处理。


第二种,按照比特流处理,将每个字节的位用移位或者用与的方式取得之后,和之前的1的个数计数比较是否为5个1了,然后继续处理,将结果用或的方式记入结果数组中。和上一种方法相比不用进行两次变换,提高了处理速度。但是需要频繁的移位处理,拖累了处理速度。


第三种,使用查表的方法。先构造处理表:用两个字节表示,处理表就有64K大小,这个处理表记录每种方式的编码可以将多少位的编码直接记入到结果数组中。由于每次处理的平均长度为1个字节,而且没有频繁的移位处理,因此这种方法的处理速度最快,在P4 2.4G的机器上能够达到50MB/s。这种方法的缺点在于处理表的大小过大,在处理时,CPU可能需要频繁的跟换内存页,从而导致速度慢。


第四种,按照一个字节构造处理表,处理表大小只有8*256项了,每个表项要记录该字节首尾分别的连续1的个数以及解码的编码及位数,这种解法使用恰当的时候在P4 2.4G的机器上能够达到100MB/s。

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值