【发布时间】:2015-07-07 15:56:20
【问题描述】:
来自网络的数据包在末尾添加了填充字节以进行对齐。我想跳过这些字节,但数据包大小是可变的但已知的。给定一个数字n,如何将其四舍五入到下一个 4 字节对齐?
【问题讨论】:
来自网络的数据包在末尾添加了填充字节以进行对齐。我想跳过这些字节,但数据包大小是可变的但已知的。给定一个数字n,如何将其四舍五入到下一个 4 字节对齐?
【问题讨论】:
另一个版本。 n 是你想下车到 4 的数字(比如 k)。公式为=n+k-n%k(其中 % 是模数)
例如(在 Unix bc 计算器中)
k=4
n=551
n+k-n%k
552
检查它是否对齐:
scale=4
552/4
138.0000
【讨论】:
对于任何整数n 和任何步幅k(均为正数),您可以通过以下方式计算不小于n 的k 的最小倍数:
(n + k - 1) / k * k
这使用了整数除法截断的事实。
【讨论】:
(n + 32 - 1) / 32 * 32?