我的程序判断依据:
1.第一个字符是否为" : " 。
2.从第二个字符到最后一个字符,是否为0..F之间的数字。
3.计算校验和,查看计算出的校验和是否和实际的校验和一致。
<欢迎给出宝贵意见>
Delphi 代码:
____________________________________________________________________________________________
function CheckLinesum(line:AnsiString): Integer;
var
len:Integer;
checksum:Integer;
i:Integer;
temp:Integer;
begin
if PAnsiChar(line)[0] <> ':' then {1. 检查第一个字符是否为冒号}
begin
Result := 0;
exit;
end;
checksum := 0; {2.计算CheckSum值,同时,检查字符是否为无效字符}
len := Length(line);
for i := 1 to ((len-3) div 2) do
begin
if TryStrToInt('$' + copy(line,i*2,2),temp) then
begin
checksum := checksum + temp;
end
else
begin
Result := 0;
exit;
end;
end;
checksum := $01 + (not (checksum mod $100));
if rightstr(IntToHex(checksum,2),2) = copy(Line,len -1 ,2) then {3.checksum校验}
Result := 1
else
begin
Result := 0;
end;
end;