

Task

Demonstrate a method of deriving the Cyclic Redundancy Check from within the language.



The result should be in accordance with ISO 3309, ITU-T V.42, Gzip and PNG.

Algorithms are described on Computation of CRC in Wikipedia.
This variant of CRC-32 uses LSB-first order, sets the initial CRC to FFFFFFFF16, and complements the final CRC.

For the purpose of this task, generate a CRC-32 checksum for the ASCII encoded string:

 The quick brown fox jumps over the lazy dog


program CalcCRC32;
 
{$APPTYPE CONSOLE}
 
uses
  System.SysUtils, System.ZLib;
 
var
  Data: AnsiString = 'The quick brown fox jumps over the lazy dog';
  CRC: UInt32;
 
begin
  CRC := crc32(0, @Data[1], Length(Data));
  WriteLn(Format('CRC32 = %8.8X', [CRC]));
end.