上次下了个 crc32.cls 可以校验
但是太费时
32是不是表示32的校验
我的要求不是很高
是不是可以改成 crc4
要是可以改
怎么改呀crc32.cls
'****************************************************************************
'人人为我,我为人人
'枕善居汉化收藏整理
'发布日期:05/08/14
'描  述:数据库图像操作示例
'网  站:http://www.mndsoft.com/
'e-mail:[email protected]
'OICQ  : 88382850
'****************************************************************************'CRC Checksum Class
'------------------------------------
'
'A very fast solution to calculate the
'CRC Checksum (at the moment CRC16 and
'CRC32 values) with the help of some
'pre-compiled assembler code
'
'(c) 2000, Fredrik Qvarfort
'Option ExplicitPublic Enum CRCAlgorithms
  CRC16
  CRC32
End Enum
Private m_Algorithm As BooleanPrivate m_CRC16 As Long
Private m_CRC16Asm() As Byte
Private m_CRC16Init As Boolean
Private m_CRC16Table(0 To 255) As LongPrivate m_CRC32 As Long
Private m_CRC32Asm() As Byte
Private m_CRC32Init As Boolean
Private m_CRC32Table(0 To 255) As LongPrivate Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As LongPublic Function AddBytes(ByteArray() As Byte) As Variant  Dim ByteSize As Long
  
  'We need to add a simple error trapping
  'here because if the bytearray is not
  'dimensioned we want it to just skip
  'the assembler code call below
  On Local Error GoTo NoData
  
  'Precalculate the size of the byte array
  ByteSize = UBound(ByteArray) - LBound(ByteArray) + 1
  
  'No error trapping needed, if something
  'goes bad below something is definitely
  'fishy with your computer
  On Local Error GoTo 0
  
  'Run the pre-compiled assembler code
  'for the current selected algorithm
  Select Case m_Algorithm
  Case CRC16
    Call CallWindowProc(VarPtr(m_CRC16Asm(0)), VarPtr(m_CRC16), VarPtr(ByteArray(LBound(ByteArray))), VarPtr(m_CRC16Table(0)), ByteSize)
  Case CRC32
    Call CallWindowProc(VarPtr(m_CRC32Asm(0)), VarPtr(m_CRC32), VarPtr(ByteArray(LBound(ByteArray))), VarPtr(m_CRC32Table(0)), ByteSize)
  End Select
  
NoData:
  'Return the current CRC value
  AddBytes = Value
  
End Function
Public Function AddString(Text As String) As Variant  'Convert the string into a byte array
  'and send it to the function that can
  'handle bytearrays
  AddString = AddBytes(StrConv(Text, vbFromUnicode))
  
End Function
Public Property Let Algorithm(New_Value As CRCAlgorithms)  'Set the new algorithm
  m_Algorithm = New_Value  'Make sure we have initialized the
  'current selected algorithm
  Select Case m_Algorithm
  Case CRC16
    If (Not m_CRC16Init) Then Call InitializeCRC16
  Case CRC32
    If (Not m_CRC32Init) Then Call InitializeCRC32
  End Select  'Make sure we reset the data of the
  'current selected algorithm
  Call Clear
  
End Property
Public Property Get Algorithm() As CRCAlgorithms  Algorithm = m_Algorithm
  
End PropertyPublic Function CalculateBytes(ByteArray() As Byte) As Variant  'Reset the current CRC calculation
  Call Clear
  
  'Calculate the CRC from the bytearray
  'and return the current CRC value
  CalculateBytes = AddBytes(ByteArray)
  
End FunctionPublic Function CalculateFile(Filename As String) As Variant  Dim Filenr As Integer
  Dim ByteArray() As Byte
  
  'Make sure the file contains data
  'to avoid errors later below
  If (FileLen(Filename) = 0) Then Exit Function
  
  DoEvents
  
  'Open the file in binary mode, read
  'the data into a bytearray and then
  'close the file
  ' On ErrorGoTo CalcErrHandler
  Filenr = FreeFile
  Open Filename For Binary As #Filenr
  ReDim ByteArray(0 To LOF(Filenr) - 1)
  Get #Filenr, , ByteArray()
  Close #Filenr
  
  'Now send the bytearray to the function
  'that can calculate a CRC from it
  CalculateFile = CalculateBytes(ByteArray)
  Exit Function
  
CalcErrHandler:
  CalculateFile = "00000000"
End Function
Public Function CalculateString(Text As String)  'Convert the string into a bytearray
  'and send it to the function that
  'calculates the CRC from a bytearray
  CalculateString = CalculateBytes(StrConv(Text, vbFromUnicode))
  
End Function
Public Property Get Value() As Variant  Select Case m_Algorithm
  Case CRC16
    Value = (m_CRC16 And 65535)
  Case CRC32
    Value = (Not m_CRC32)
  End Select
  
End PropertyPublic Property Let Value(New_Value As Variant)  Select Case m_Algorithm
  Case CRC16
    m_CRC16 = New_Value
  Case CRC32
    m_CRC32 = New_Value
  End Select
  
End PropertyPrivate Sub InitializeCRC16()  Dim i As Long
  Dim j As Long
  Dim k As Long
  Dim CRC As Long
  Dim sASM As String
  
  'Create the fixed lookup-table, this
  'is calculated because it won't take
  'long and is only done once
  For i = 0 To 255
    k = i * 256
    CRC = 0
    For j = 0 To 7
      If (((CRC Xor k) And 32768) = 32768) Then
        CRC = (CRC * 2) Xor &H1021
      Else
        CRC = (CRC * 2)
      End If
      k = k * 2
    Next
    m_CRC16Table(i) = CRC '(CRC And 65535)
  Next
  
  'Create a bytearray to hold the
  'precompiled assembler code
  sASM = "5589E55756505351528B45088B008B750C8B7D108B4D1431DB8A1E30E3668B149F30C66689D0464975EF25FFFF00008B4D0889015A595B585E5F89EC5DC21000"
  ReDim m_CRC16Asm(0 To Len(sASM) \ 2 - 1)
  For i = 1 To Len(sASM) Step 2
    m_CRC16Asm(i \ 2) = Val("&H" & Mid$(sASM, i, 2))
  Next
  
  'Mark the CRC16 algorithm as initialized
  m_CRC16Init = True
  
End Sub

解决方案 »

  1.   

    'MCRC16.bas
    '这个就是快速 CRC ,用查表代替计算。
    Option ExplicitPrivate HI16(0 To 255)  As Byte
    Private LO16(0 To 255)  As Byte
    Private bInited         As BooleanPublic Function CRC16(Data() As Byte) As Integer
        Dim CH              As Byte
        Dim CL              As Byte
        Dim C               As Byte
        Dim I               As Long    Call Init
        
        CH = &HFF: CL = &HFF    For I = LBound(Data) To UBound(Data)
            C = CH Xor Data(I)
            CH = CL Xor HI16(C)
            CL = LO16(C)
        Next I    'CRC16 = MakeWord(CL, CH)
        If CH And &H80 Then
            CRC16 = ((CH * &H100&) + CL) Or &HFFFF0000
        Else
            CRC16 = (CH * &H100&) + CL
        End If
    End FunctionPrivate Sub Init()
        If Not bInited Then
            InitArray HI16, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40, &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, _
                    &H0, &HC1, &H81, &H40, &H1, &HC0, &H80, &H41, &H1, &HC0, &H80, &H41, &H0, &HC1, &H81, &H40
            InitArray LO16, _
                    &H0, &HC0, &HC1, &H1, &HC3, &H3, &H2, &HC2, &HC6, &H6, &H7, &HC7, &H5, &HC5, &HC4, &H4, _
                    &HCC, &HC, &HD, &HCD, &HF, &HCF, &HCE, &HE, &HA, &HCA, &HCB, &HB, &HC9, &H9, &H8, &HC8, _
                    &HD8, &H18, &H19, &HD9, &H1B, &HDB, &HDA, &H1A, &H1E, &HDE, &HDF, &H1F, &HDD, &H1D, &H1C, &HDC, _
                    &H14, &HD4, &HD5, &H15, &HD7, &H17, &H16, &HD6, &HD2, &H12, &H13, &HD3, &H11, &HD1, &HD0, &H10, _
                    &HF0, &H30, &H31, &HF1, &H33, &HF3, &HF2, &H32, &H36, &HF6, &HF7, &H37, &HF5, &H35, &H34, &HF4, _
                    &H3C, &HFC, &HFD, &H3D, &HFF, &H3F, &H3E, &HFE, &HFA, &H3A, &H3B, &HFB, &H39, &HF9, &HF8, &H38, _
                    &H28, &HE8, &HE9, &H29, &HEB, &H2B, &H2A, &HEA, &HEE, &H2E, &H2F, &HEF, &H2D, &HED, &HEC, &H2C, _
                    &HE4, &H24, &H25, &HE5, &H27, &HE7, &HE6, &H26, &H22, &HE2, &HE3, &H23, &HE1, &H21, &H20, &HE0, _
                    &HA0, &H60, &H61, &HA1, &H63, &HA3, &HA2, &H62, &H66, &HA6, &HA7, &H67, &HA5, &H65, &H64, &HA4, _
                    &H6C, &HAC, &HAD, &H6D, &HAF, &H6F, &H6E, &HAE, &HAA, &H6A, &H6B, &HAB, &H69, &HA9, &HA8, &H68, _
                    &H78, &HB8, &HB9, &H79, &HBB, &H7B, &H7A, &HBA, &HBE, &H7E, &H7F, &HBF, &H7D, &HBD, &HBC, &H7C, _
                    &HB4, &H74, &H75, &HB5, &H77, &HB7, &HB6, &H76, &H72, &HB2, &HB3, &H73, &HB1, &H71, &H70, &HB0, _
                    &H50, &H90, &H91, &H51, &H93, &H53, &H52, &H92, &H96, &H56, &H57, &H97, &H55, &H95, &H94, &H54, _
                    &H9C, &H5C, &H5D, &H9D, &H5F, &H9F, &H9E, &H5E, &H5A, &H9A, &H9B, &H5B, &H99, &H59, &H58, &H98, _
                    &H88, &H48, &H49, &H89, &H4B, &H8B, &H8A, &H4A, &H4E, &H8E, &H8F, &H4F, &H8D, &H4D, &H4C, &H8C, _
                    &H44, &H84, &H85, &H45, &H87, &H47, &H46, &H86, &H82, &H42, &H43, &H83, &H41, &H81, &H80, &H40
            bInited = True
        End If
    End SubPrivate Sub InitArray(Arr() As Byte, ParamArray Arg())
        Dim I               As Long
        
        For I = 0 To 255
            Arr(I) = Arg(I)
        Next
    End Sub
      

  2.   

    Public Sub Clear()  'Here can be sloppy and reset both
      'crc variables (this procedure will
      'be more advanced when adding more
      'checksums algorithms..)
      m_CRC16 = 0
      m_CRC32 = &HFFFFFFFF
      
    End SubPrivate Sub InitializeCRC32()  Dim i As Long
      Dim sASM As String
      
      m_CRC32Table(0) = &H0
      m_CRC32Table(1) = &H77073096
      m_CRC32Table(2) = &HEE0E612C
      m_CRC32Table(3) = &H990951BA
      m_CRC32Table(4) = &H76DC419
      m_CRC32Table(5) = &H706AF48F
      m_CRC32Table(6) = &HE963A535
      m_CRC32Table(7) = &H9E6495A3
      m_CRC32Table(8) = &HEDB8832
      m_CRC32Table(9) = &H79DCB8A4
      m_CRC32Table(10) = &HE0D5E91E
      m_CRC32Table(11) = &H97D2D988
      m_CRC32Table(12) = &H9B64C2B
      m_CRC32Table(13) = &H7EB17CBD
      m_CRC32Table(14) = &HE7B82D07
      m_CRC32Table(15) = &H90BF1D91
      m_CRC32Table(16) = &H1DB71064
      m_CRC32Table(17) = &H6AB020F2
      m_CRC32Table(18) = &HF3B97148
      m_CRC32Table(19) = &H84BE41DE
      m_CRC32Table(20) = &H1ADAD47D
      m_CRC32Table(21) = &H6DDDE4EB
      m_CRC32Table(22) = &HF4D4B551
      m_CRC32Table(23) = &H83D385C7
      m_CRC32Table(24) = &H136C9856
      m_CRC32Table(25) = &H646BA8C0
      m_CRC32Table(26) = &HFD62F97A
      m_CRC32Table(27) = &H8A65C9EC
      m_CRC32Table(28) = &H14015C4F
      m_CRC32Table(29) = &H63066CD9
      m_CRC32Table(30) = &HFA0F3D63
      m_CRC32Table(31) = &H8D080DF5
      m_CRC32Table(32) = &H3B6E20C8
      

  3.   

    m_CRC32Table(33) = &H4C69105E
      m_CRC32Table(34) = &HD56041E4
      m_CRC32Table(35) = &HA2677172
      m_CRC32Table(36) = &H3C03E4D1
      m_CRC32Table(37) = &H4B04D447
      m_CRC32Table(38) = &HD20D85FD
      m_CRC32Table(39) = &HA50AB56B
      m_CRC32Table(40) = &H35B5A8FA
      m_CRC32Table(41) = &H42B2986C
      m_CRC32Table(42) = &HDBBBC9D6
      m_CRC32Table(43) = &HACBCF940
      m_CRC32Table(44) = &H32D86CE3
      m_CRC32Table(45) = &H45DF5C75
      m_CRC32Table(46) = &HDCD60DCF
      m_CRC32Table(47) = &HABD13D59
      m_CRC32Table(48) = &H26D930AC
      m_CRC32Table(49) = &H51DE003A
      m_CRC32Table(50) = &HC8D75180
      m_CRC32Table(51) = &HBFD06116
      m_CRC32Table(52) = &H21B4F4B5
      m_CRC32Table(53) = &H56B3C423
      m_CRC32Table(54) = &HCFBA9599
      m_CRC32Table(55) = &HB8BDA50F
      m_CRC32Table(56) = &H2802B89E
      m_CRC32Table(57) = &H5F058808
      m_CRC32Table(58) = &HC60CD9B2
      m_CRC32Table(59) = &HB10BE924
      m_CRC32Table(60) = &H2F6F7C87
      m_CRC32Table(61) = &H58684C11
      m_CRC32Table(62) = &HC1611DAB
      m_CRC32Table(63) = &HB6662D3D
      m_CRC32Table(64) = &H76DC4190
      m_CRC32Table(65) = &H1DB7106
      m_CRC32Table(66) = &H98D220BC
      m_CRC32Table(67) = &HEFD5102A
      m_CRC32Table(68) = &H71B18589
      m_CRC32Table(69) = &H6B6B51F
      m_CRC32Table(70) = &H9FBFE4A5
      m_CRC32Table(71) = &HE8B8D433
      m_CRC32Table(72) = &H7807C9A2
      m_CRC32Table(73) = &HF00F934
      m_CRC32Table(74) = &H9609A88E
      m_CRC32Table(75) = &HE10E9818
      m_CRC32Table(76) = &H7F6A0DBB
      m_CRC32Table(77) = &H86D3D2D
      m_CRC32Table(78) = &H91646C97
      m_CRC32Table(79) = &HE6635C01
      m_CRC32Table(80) = &H6B6B51F4
      m_CRC32Table(81) = &H1C6C6162
      m_CRC32Table(82) = &H856530D8
      m_CRC32Table(83) = &HF262004E
      m_CRC32Table(84) = &H6C0695ED
      m_CRC32Table(85) = &H1B01A57B
      m_CRC32Table(86) = &H8208F4C1
      m_CRC32Table(87) = &HF50FC457
      m_CRC32Table(88) = &H65B0D9C6
      m_CRC32Table(89) = &H12B7E950
      m_CRC32Table(90) = &H8BBEB8EA
      m_CRC32Table(91) = &HFCB9887C
      m_CRC32Table(92) = &H62DD1DDF
      m_CRC32Table(93) = &H15DA2D49
      m_CRC32Table(94) = &H8CD37CF3
      m_CRC32Table(95) = &HFBD44C65
      m_CRC32Table(96) = &H4DB26158
      m_CRC32Table(97) = &H3AB551CE
      m_CRC32Table(98) = &HA3BC0074
      m_CRC32Table(99) = &HD4BB30E2
      m_CRC32Table(100) = &H4ADFA541
      m_CRC32Table(101) = &H3DD895D7
      m_CRC32Table(102) = &HA4D1C46D
      m_CRC32Table(103) = &HD3D6F4FB
      m_CRC32Table(104) = &H4369E96A
      m_CRC32Table(105) = &H346ED9FC
      m_CRC32Table(106) = &HAD678846
      m_CRC32Table(107) = &HDA60B8D0
      m_CRC32Table(108) = &H44042D73
      m_CRC32Table(109) = &H33031DE5
      m_CRC32Table(110) = &HAA0A4C5F
      m_CRC32Table(111) = &HDD0D7CC9
      m_CRC32Table(112) = &H5005713C
      m_CRC32Table(113) = &H270241AA
      m_CRC32Table(114) = &HBE0B1010
      m_CRC32Table(115) = &HC90C2086
      m_CRC32Table(116) = &H5768B525
      m_CRC32Table(117) = &H206F85B3
      m_CRC32Table(118) = &HB966D409
      m_CRC32Table(119) = &HCE61E49F
      m_CRC32Table(120) = &H5EDEF90E
      m_CRC32Table(121) = &H29D9C998
      m_CRC32Table(122) = &HB0D09822
      m_CRC32Table(123) = &HC7D7A8B4
      m_CRC32Table(124) = &H59B33D17
      m_CRC32Table(125) = &H2EB40D81
      m_CRC32Table(126) = &HB7BD5C3B
      m_CRC32Table(127) = &HC0BA6CAD
      m_CRC32Table(128) = &HEDB88320
      m_CRC32Table(129) = &H9ABFB3B6
      m_CRC32Table(130) = &H3B6E20C
      m_CRC32Table(131) = &H74B1D29A
      m_CRC32Table(132) = &HEAD54739
      m_CRC32Table(133) = &H9DD277AF
      m_CRC32Table(134) = &H4DB2615
      m_CRC32Table(135) = &H73DC1683
      m_CRC32Table(136) = &HE3630B12
      m_CRC32Table(137) = &H94643B84
      m_CRC32Table(138) = &HD6D6A3E
      m_CRC32Table(139) = &H7A6A5AA8
      m_CRC32Table(140) = &HE40ECF0B
      m_CRC32Table(141) = &H9309FF9D
      m_CRC32Table(142) = &HA00AE27
      m_CRC32Table(143) = &H7D079EB1
      m_CRC32Table(144) = &HF00F9344
      m_CRC32Table(145) = &H8708A3D2
      m_CRC32Table(146) = &H1E01F268
      m_CRC32Table(147) = &H6906C2FE
      m_CRC32Table(148) = &HF762575D
      m_CRC32Table(149) = &H806567CB
      m_CRC32Table(150) = &H196C3671
      m_CRC32Table(151) = &H6E6B06E7
      m_CRC32Table(152) = &HFED41B76
      m_CRC32Table(153) = &H89D32BE0
      m_CRC32Table(154) = &H10DA7A5A
      m_CRC32Table(155) = &H67DD4ACC
      m_CRC32Table(156) = &HF9B9DF6F
      m_CRC32Table(157) = &H8EBEEFF9
      m_CRC32Table(158) = &H17B7BE43
      m_CRC32Table(159) = &H60B08ED5
      m_CRC32Table(160) = &HD6D6A3E8
      m_CRC32Table(161) = &HA1D1937E
      m_CRC32Table(162) = &H38D8C2C4
      m_CRC32Table(163) = &H4FDFF252
      m_CRC32Table(164) = &HD1BB67F1
      m_CRC32Table(165) = &HA6BC5767
      m_CRC32Table(166) = &H3FB506DD
      m_CRC32Table(167) = &H48B2364B
      m_CRC32Table(168) = &HD80D2BDA
      m_CRC32Table(169) = &HAF0A1B4C
      m_CRC32Table(170) = &H36034AF6
      m_CRC32Table(171) = &H41047A60
      m_CRC32Table(172) = &HDF60EFC3
      m_CRC32Table(173) = &HA867DF55
      m_CRC32Table(174) = &H316E8EEF
      m_CRC32Table(175) = &H4669BE79
      m_CRC32Table(176) = &HCB61B38C
      m_CRC32Table(177) = &HBC66831A
      m_CRC32Table(178) = &H256FD2A0
      m_CRC32Table(179) = &H5268E236
      m_CRC32Table(180) = &HCC0C7795
      m_CRC32Table(181) = &HBB0B4703
      m_CRC32Table(182) = &H220216B9
      m_CRC32Table(183) = &H5505262F
      m_CRC32Table(184) = &HC5BA3BBE
      m_CRC32Table(185) = &HB2BD0B28
      m_CRC32Table(186) = &H2BB45A92
      m_CRC32Table(187) = &H5CB36A04
      m_CRC32Table(188) = &HC2D7FFA7
      m_CRC32Table(189) = &HB5D0CF31
      m_CRC32Table(190) = &H2CD99E8B
      m_CRC32Table(191) = &H5BDEAE1D
      m_CRC32Table(192) = &H9B64C2B0
      m_CRC32Table(193) = &HEC63F226
     
      

  4.   

     m_CRC32Table(194) = &H756AA39C
      m_CRC32Table(195) = &H26D930A
      m_CRC32Table(196) = &H9C0906A9
      m_CRC32Table(197) = &HEB0E363F
      m_CRC32Table(198) = &H72076785
      m_CRC32Table(199) = &H5005713
      m_CRC32Table(200) = &H95BF4A82
      m_CRC32Table(201) = &HE2B87A14
      m_CRC32Table(202) = &H7BB12BAE
      m_CRC32Table(203) = &HCB61B38
      m_CRC32Table(204) = &H92D28E9B
      m_CRC32Table(205) = &HE5D5BE0D
      m_CRC32Table(206) = &H7CDCEFB7
      m_CRC32Table(207) = &HBDBDF21
      m_CRC32Table(208) = &H86D3D2D4
      m_CRC32Table(209) = &HF1D4E242
      m_CRC32Table(210) = &H68DDB3F8
      m_CRC32Table(211) = &H1FDA836E
      m_CRC32Table(212) = &H81BE16CD
      m_CRC32Table(213) = &HF6B9265B
      m_CRC32Table(214) = &H6FB077E1
      m_CRC32Table(215) = &H18B74777
      m_CRC32Table(216) = &H88085AE6
      m_CRC32Table(217) = &HFF0F6A70
      m_CRC32Table(218) = &H66063BCA
      m_CRC32Table(219) = &H11010B5C
      m_CRC32Table(220) = &H8F659EFF
      m_CRC32Table(221) = &HF862AE69
      m_CRC32Table(222) = &H616BFFD3
      m_CRC32Table(223) = &H166CCF45
      m_CRC32Table(224) = &HA00AE278
      m_CRC32Table(225) = &HD70DD2EE
      m_CRC32Table(226) = &H4E048354
      m_CRC32Table(227) = &H3903B3C2
      m_CRC32Table(228) = &HA7672661
      m_CRC32Table(229) = &HD06016F7
      m_CRC32Table(230) = &H4969474D
      m_CRC32Table(231) = &H3E6E77DB
      m_CRC32Table(232) = &HAED16A4A
      m_CRC32Table(233) = &HD9D65ADC
      m_CRC32Table(234) = &H40DF0B66
      m_CRC32Table(235) = &H37D83BF0
      m_CRC32Table(236) = &HA9BCAE53
      m_CRC32Table(237) = &HDEBB9EC5
      m_CRC32Table(238) = &H47B2CF7F
      m_CRC32Table(239) = &H30B5FFE9
      m_CRC32Table(240) = &HBDBDF21C
      m_CRC32Table(241) = &HCABAC28A
      m_CRC32Table(242) = &H53B39330
      m_CRC32Table(243) = &H24B4A3A6
      m_CRC32Table(244) = &HBAD03605
      m_CRC32Table(245) = &HCDD70693
      m_CRC32Table(246) = &H54DE5729
      m_CRC32Table(247) = &H23D967BF
      m_CRC32Table(248) = &HB3667A2E
      m_CRC32Table(249) = &HC4614AB8
      m_CRC32Table(250) = &H5D681B02
      m_CRC32Table(251) = &H2A6F2B94
      m_CRC32Table(252) = &HB40BBE37
      m_CRC32Table(253) = &HC30C8EA1
      m_CRC32Table(254) = &H5A05DF1B
      m_CRC32Table(255) = &H2D02EF8D  'Create a bytearray to hold the
      'precompiled assembler code
      sASM = "5589E557565053518B45088B008B750C8B7D108B4D1431DB8A1E30C3C1E80833049F464975F28B4D088901595B585E5F89EC5DC21000"
      ReDim m_CRC32Asm(0 To Len(sASM) \ 2 - 1)
      For i = 1 To Len(sASM) Step 2
        m_CRC32Asm(i \ 2) = Val("&H" & Mid$(sASM, i, 2))
      Next
      
      'Mark the CRC32 algorithm as initialized
      m_CRC32Init = TrueEnd Sub
    Private Sub Class_Initialize()  'The default algorithm is CRC32
      Algorithm = CRC32
      
    End Sub