C 四舍五入读取到下一字节的位数

C 四舍五入读取到下一字节的位数,c,ffmpeg,C,Ffmpeg,我有一个可以是任意位数的头,有一个叫做ByteAlign的变量,通过从文件开头的文件位置减去当前文件位置来计算,这个变量的作用是将头填充到下一个完整的字节。因此,如果报头占用57位,则ByteAlign变量的长度需要为7位,才能将报头填充到总共64位,即8字节 不起作用的解决方案: 变量%8-8,结果是答案,但为负数 8%变量;这是完全不准确的,给出的答案是29,这是明显错误的,最大的数字应该是7 我该怎么做 需要容纳n位的字节数为(n+7)/8 其中的位数为8*((n+7)/8) 因此,填充量

我有一个可以是任意位数的头,有一个叫做ByteAlign的变量,通过从文件开头的文件位置减去当前文件位置来计算,这个变量的作用是将头填充到下一个完整的字节。因此,如果报头占用57位,则ByteAlign变量的长度需要为7位,才能将报头填充到总共64位,即8字节

不起作用的解决方案:

变量%8-8,结果是答案,但为负数

8%变量;这是完全不准确的,给出的答案是29,这是明显错误的,最大的数字应该是7

我该怎么做

  • 需要容纳
    n
    位的字节数为
    (n+7)/8

  • 其中的位数为
    8*((n+7)/8)

  • 因此,填充量为
    8*((n+7)/8)-n

  • 这应该起作用:

    (8 - (Variable & 7)) & 7