[英]What is the best way to calculate number of padding bytes
计算8位数据的填充量的最有效方法是什么,需要是C中32位的倍数?
目前我这样做:
pad = (4-size%4)%4;
只要优化编译器对% 4
而不是除法使用位掩码,我认为你的代码可能非常好。 这可能会略有改善:
// only the last 2 bits (hence & 3) matter
pad = (4 - (size & 3)) & 3;
但同样,优化编译器可能足够聪明,无论如何都要将代码减少到此。 我想不出更好的事情。
// align n bytes on size boundary
pad n size = (~n + 1) & (size - 1)
这类似于TypeIA的解决方案,只使用机器语言操作。
(~n + 1) computes the negative value, that would make up 0 when added to n
& (size - 1) filters only the last relevant bits.
例子
pad 13 8 = 3
pad 11 4 = 1
pad = (-size)&3;
这应该是最快的。
size 0: pad 0
size 1: pad 3
size 2: pad 2
size 3: pad 1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.