Possible Duplicate:
Filling an octet string




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

最佳答案

这被称为“比特流”,并且在例如低级网络协议。

如果您的参数有一个合理的上限,例如32位,您应该考虑实现以下方面:

void bitstream_append(uint32_t value, uint8_t bits);


这会将bitsvalue最右边的位附加到流中。如果已经有了bitstream_append_bit(bool bit);,可能会想一想如何实现该目标。

08-03 23:50