我有一个可以是任意位数的标题,并且有一个名为ByteAlign的变量,它通过从文件开头的文件位置减去当前文件位置来计算,该变量的点是将标题填充到下一个完整字节。因此,如果标头占用57位,则ByteAlign变量的长度需要为7位,以便将标头填充为64位,即8位。
无法解决的解决方案:
变量%8 - 8,结果是答案,但是否定。
8%变量;这是完全不准确的,并给出了像29这样明显错误的答案,它应该是7的最大数字。
我到底该怎么做?
答案 0 :(得分:2)
您需要容纳n
位的字节数为(n + 7) / 8
。
此位数为8 * ((n + 7) / 8)
。
填充量因此为8 * ((n + 7) / 8) - n
。
答案 1 :(得分:2)
这应该有效:
(8 - (Variable & 7)) & 7