我正在尝试为我正在从事的项目实施 bitstuffing,即一个简单的软件 AFSK 调制解调器。简化的协议如下所示:
0111 1110 # burst sequence
0111 1110 # 16 times 0b0111_1110
...
0111 1110
...
... # 80 bit header (CRC, frame counter, etc.)
...
0111 1110 # header delimiter
...
... # data
...
0111 1110 # end-of-frame sequence
现在我需要0111 1110
在接收到的数据中找到保留的序列,因此必须确保头部和数据都不包含六个连续1
的 s。这可以通过位填充来完成,例如在每个五个1
s 的序列之后插入一个零:
11111111
转换为
111110111
和
11111000
转换为
111110000
如果我想有效地实现这一点,我想我不应该使用1
s 和0
s 的数组,我必须将数据字节转换为1
s 和0
s,然后填充一个数组等,但静态大小的位域似乎也不适合,因为由于位填充,内容的长度是可变的。
我可以使用哪种数据结构来更有效地进行位填充?