내가 찾은 방법을 사용하는 이유는 C#으로 Adler32 알고리즘을 구현하고 나는 그것을 사용하고 싶습니다,하지만 난 코드의 일부가 이해가 안 :Adler32 체크섬 생성 - 비트 오른쪽 연산자 이동이
을 누군가가 나를 설명 할 수 :
1) 왜 SUM2가 이동하는 이유 SUM1 및 SUM2이
2) 을 초기화 할 때, 비트 연산자를 사용하는? 위키
Adler32 https://en.wikipedia.org/wiki/Adler-32
& 오퍼레이터의 설명 : (이진 AND 연산자 사본은 두 피연산자에 존재하는 경우, 결과로 비트)
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;
}