如何舍入到下一个32位对齐?

时间:2015-04-28 16:58:51

标签: c++ alignment

通过网络传输的数据包在末尾添加了填充字节以进行对齐。我想跳过这些字节,但数据包大小是可变的,但已知。给定一个数字n,如何将其四舍五入到下一个4字节对齐?

2 个答案:

答案 0 :(得分:2)

对于任何整数shiny和任何步幅, value=1(均为正数),您可以通过以下方式计算n不小于k的最小倍数:

k

这使用了整数除法截断的事实。

答案 1 :(得分:0)

另一个版本。 n是您要乘以4的数字(例如k)。公式为= n + k-n%k(其中%为模数)

例如(在Unix bc计算器中)

k=4
n=551
n+k-n%k
552

检查它是否对齐:

scale=4
552/4
138.0000