将数据转换为7位而不是C中的1个字节

时间:2019-06-15 16:54:13

标签: c embedded

我在主节点和从节点之间进行通信,消息如下:

[2字节标头开始] [最多11字节有效载荷] [1字节crc] [2字节标头结束]

现在会出现一个问题,当有效负载中的2个标头结束字节以相同顺序包含在有效载荷中时。 crc可以防止错误,但是此命令永远不会通过。因此,我需要以某种方式从有效载荷中排除标头定界符,至少从两个末端定界符中排除,但我看不出如何有效地实现这一目标。我的第一个建议是使用7bit而不是8bit,但是后来我无法建立uint32_t,uint64_t。

有什么想法可以解决这个问题吗?

1 个答案:

答案 0 :(得分:0)

您可以通过以下方法处理有效载荷中出现的结束位

在有效载荷之前的标头中,添加有效载荷长度的字段(如果尚不存在),以便忽略在有效载荷之前遇到的结束位。或者,如果标头不再具有容纳长度字段的空间,则可以确保有效载荷的长度始终为11个字节(建议使用@Scheff,建议使用伪零)。