使用单模或双模计算字节对齐
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 的情况下修正结果。
如果这对某些人来说似乎显而易见,我深表歉意,但我有点脑残。
有人可以确认这两种对齐到 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 的情况下修正结果。