使用单模或双模计算字节对齐

Calculating byte alignment using a single or double modulus

如果这对某些人来说似乎显而易见,我深表歉意,但我有点脑残。

有人可以确认这两种对齐到 4 字节边界的不同方法在数学上是否等效吗?

使用单模运算:

int remainderLength = bytes.Length % AlignmentBoundary;
if (remainderLength > 0)
{
    int paddingLength = AlignmentBoundary - remainderLength;
    for (int i = 0; i < paddingLength; i++)
        bytes.Add(0);
}

使用双模运算:

int paddingLength = (AlignmentBoundary - bytes.Length % AlignmentBoundary) % AlignmentBoundary;
for (int i = 0; i < paddingLength; i++)
    bytes.Add(0);

是的,它们在数学上是等价的。

在第二个选项中,第二个模数可以帮助您在第一个模数为 0 的情况下修正结果。