打包成一个八位字符串

时间:2013-01-08 14:32:26

标签: c string

  

可能重复:
  Filling an octet string

我有65个不同位长的参数,我需要填写一个八位字符串。参数将以八位字节串连续填充。例如,假设第一个参数是1位长,那么它将填充在八位字节串的第1个八位字节的第0位。现在第二个参数假设为9位长。因此,该参数的前7位将填充在相​​同的八位位组中,接下来的2位应该位于下一个八位位组的第0位和第1位位置。类似地,其他参数将填充在八位字节串中。我试着编写一个函数,在这里我传递指向当前八位字节的指针,位位置和数据将被复制的源指针。但我发现逻辑实现有困难。我尝试了很多逻辑(位操作,位移,旋转等)但无法得到正确的逻辑。如果有人能在“C”中给我一个逻辑/功能,我将不胜感激。您也可以使用不同的功能原型。

1 个答案:

答案 0 :(得分:0)

这称为“比特流”,在例如“比特流”中很常见。低级网络协议。

如果您的参数有合理的上限,例如32位,你应该考虑实现类似的东西:

void bitstream_append(uint32_t value, uint8_t bits);

会将bits最右边的value位附加到流中。如果您已经拥有bitstream_append_bit(bool bit);,那么考虑如何实现它可能会有所帮助。