CheckSum 看不懂 求高手解释下 !
function CheckSum(var Buffer; Size:Integer):Word;
type
TWordArray = array[0..1] of Word;
var
ChkSum : Longword;
i : Integer;
begin
ChkSum := 0; i := 0;
while Size>1 do begin
Inc(ChkSum,TWordArray(Buffer)[i]);// 疑问1. 强制类型转换 Buffer , 但是 i的值 超过了3 怎么回事啊 ?
Inc(i);
Dec(Size,SizeOf(Word));
end;
if Size=1 then
Inc(ChkSum,Byte(TWordArray(Buffer)[i]));
ChkSum := (ChkSum shr 16) + (ChkSum and $FFFF);//疑问1 这是做什么用的 ?
Inc(ChkSum,(Chksum shr 16));
Result := Word(not ChkSum);
end;
另外 谁可以 推荐下 CheckSum 算法的原理的文章 ,我找了半天没找到比较好的。
谢谢