0

可能重复:
填充八位字节字符串

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

4

1 回答 1

0

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

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

void bitstream_append(uint32_t value, uint8_t bits);

这会将bits最右边的位附加value到流中。如果您已经拥有bitstream_append_bit(bool bit);.

于 2013-01-08T14:38:20.380 回答