相关疑难解决方法(0)

提高Crc16计算的速度

我需要在大文件上用$ 1021多项式计算Crc16校验和,下面是我当前的实现,但是在大文件上它相当慢(例如90 MB文件大约需要9秒).

所以我的问题是如何改进我当前的实现(使其更快),我用Google搜索并查看了一些实现表查找的示例但我的问题是我不明白如何修改它们以包含多项式(可能是我的数学失败了).

{ based on http://miscel.dk/MiscEl/CRCcalculations.html }
function Crc16(const Buffer: PByte; const BufSize: Int64;
  const Polynom: WORD=$1021; const Seed: WORD=0): Word;
var
  i,j: Integer;
begin
  Result := Seed;

  for i:=0 to BufSize-1 do
  begin
    Result := Result xor (Buffer[i] shl 8);

    for j:=0 to 7 do begin
      if (Result and $8000) <> 0 then
        Result := (Result shl 1) xor Polynom
      else Result := Result shl 1;
    end;
  end;

  Result := Result and $FFFF;
end;
Run Code Online (Sandbox Code Playgroud)

delphi crc delphi-2010

2
推荐指数
1
解决办法
5601
查看次数

标签 统计

crc ×1

delphi ×1

delphi-2010 ×1