2014-12-04 63 views
-1

我有一个头可以是任意数量的位,并且有一个名为ByteAlign的变量,它是通过从文件开头的文件位置减去当前文件位置计算出来的,这个变量的一点是将头部填充到下一个完整的字节。所以如果头部占据57位,则ByteAlign变量需要长度为7位,以将头部填充到总共64位或8个字节。读取下一个字节的位数

解决方案不起作用:

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

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

我到底该怎么做?

回答

2

这应该工作:

(8 - (Variable & 7)) & 7 
2
  1. 你需要适应n位字节数为(n + 7)/8

  2. 其中的位数是8 * ((n + 7)/8)

  3. 因此填充量为8 * ((n + 7)/8) - n