c - 鉴别 "bit stuffing"之后的位

标签 c binary bit avr bitstuffing

我写了一段代码,在比特流中连续 6 个“1”后添加一个“0”。但是如何解码呢?

这里是一个比特流的例子:

original = {01101111110111000101111110001100...etc...}

stuffed  = {011011111O101110001011111O10001100...etc...}

(“O”代表填充的“0”。)

如您所见,在每个“111111”之后都添加了一个“0”,要检索原始流,必须将其删除。简单的。

但是...如果原始流与填充流具有相同的形式怎么办?我怎么知道我是否必须删除这些位?!

最佳答案

我认为您对基础知识感到困惑。假设您想要在 2 个 A 之后添加一个 B。这不是“填充”:

AAAAA

“填充”它给你:

AABAABA

以上是“填充”或“未填充”。换句话说,你可以再次填充它:

AABBAABBA

或者你可以“解开”它:

AAAAAA

What if the original stream had the same form as the stuffed one?

因此,如果一个比特流中有 10 个连续的 1,那么它显然没有被填充。对于 可能 已被填充的比特流,您不能说同样的话。

关于c - 鉴别 "bit stuffing"之后的位,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54623219/

相关文章:

c - 正在运行的函数暂停父函数

c - fork() 后管道的行为

将任意大数转换为 base 256

c - C中的按位逻辑

c++ - 检查一个 bitset 是否包含另一个 bitset 的所有值

c - 如何在 C 中表示 float 的二进制乘法?

比较C中不同字符串的两个字符

algorithm - 非恢复有符号整数除法后校正

c++ - 二进制数据 : write an entire object into a file or separated variables (no object)? 哪个性能更好

c# - 二进制值的数据类型是什么?是字符串数据类型吗?