

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


Option Explicit
Declare Function RtlComputeCrc32 Lib "ntdll.dll" _
  (ByVal dwInitial As Long, pData As Any, ByVal iLen As Long) As Long
'--------------------------------------------------------------------
Sub Main()
Dim s As String
Dim b() As Byte
Dim l As Long
 
  s = "The quick brown fox jumps over the lazy dog"
  b() = StrConv(s, vbFromUnicode) 'convert Unicode to ASCII
  l = RtlComputeCrc32(0&, b(0), Len(s))
  Debug.Assert l = &H414FA339
 
End Sub