を使用している理由は、私はC#でAdler32チェックアルゴリズムを実装する方法を見つけたと私はそれを使用したいと思いますが、私は、コードの一部を理解していない:Adler32チェックサム生成 - ビットと右のオペレータをシフトが
誰かが私に説明できます:
1)なぜSUM2がシフトしている理由SUM1、およびSUM2が
2)を初期化するとき、ビット演算子が使用されていますか? wikiに
Adler32チェックhttps://en.wikipedia.org/wiki/Adler-32
&オペレータの説明: (バイナリとオペレータコピーし、両方のオペランドに存在する場合、結果のビット)
private bool MakeForBuffer(byte[] bytesBuff, uint adlerCheckSum)
{
if (Object.Equals(bytesBuff, null))
{
checksumValue = 0;
return false;
}
int nSize = bytesBuff.GetLength(0);
if (nSize == 0)
{
checksumValue = 0;
return false;
}
uint sum1 = adlerCheckSum & 0xFFFF; // 1) why bit operator is used?
uint sum2 = (adlerCheckSum >> 16) & 0xFFFF; // 2) why bit operator is used? , why is it shifted?
for (int i = 0; i < nSize; i++)
{
sum1 = (sum1 + bytesBuff[i]) % adlerBase;
sum2 = (sum1 + sum2) % adlerBase;
}
checksumValue = (sum2 << 16) + sum1;
return true;
}