Older Version Newer Version

harmonv harmonv Nov 8, 2007 - "added vbnet code tag"

- fqvarfort fqvarfort
An easy-to-use code sample for calculating the CRC-32 value of a string.

 Dim CRC32Table(256) 

' Test suite answers
'CRC32(123456789) = CBF43926
'CRC32(hello world)=D4A1185
'CRC32(Hello world)=8BD69E52
'CRC32(a) = E8B7BE43
'CRC32( ) = E96CCF45

Print DecHex$(CRC32("123456789"))
Print DecHex$(CRC32("hello world"))
Print DecHex$(CRC32("Hello world"))
Print DecHex$(CRC32("a"))
Print DecHex$(CRC32(" "))

Function CRC32(Msg$)

IF (CRC32Table(1) = 0) THEN
Call CRC32Setup
END IF

lCRC = HexDec("&HFFFFFFFF")
For a = 1 To Len(Msg$)
bChar = Asc(Mid$(Msg$, a, 1))
bTemp = (lCRC And HexDec("&HFF")) Xor bChar
lCRC = (Int(lCRC / 256) Xor CRC32Table(bTemp))
Next
CRC32 = (lCRC Xor HexDec("&HFFFFFFFF"))

End Function

Sub CRC32Setup

CRC32Table(0) = HexDec("&H0")
CRC32Table(1) = HexDec("&H77073096")
CRC32Table(2) = HexDec("&HEE0E612C")
CRC32Table(3) = HexDec("&H990951BA")
CRC32Table(4) = HexDec("&H76DC419")
CRC32Table(5) = HexDec("&H706AF48F")
CRC32Table(6) = HexDec("&HE963A535")
CRC32Table(7) = HexDec("&H9E6495A3")
CRC32Table(8) = HexDec("&HEDB8832")
CRC32Table(9) = HexDec("&H79DCB8A4")
CRC32Table(10) = HexDec("&HE0D5E91E")
CRC32Table(11) = HexDec("&H97D2D988")
CRC32Table(12) = HexDec("&H9B64C2B")
CRC32Table(13) = HexDec("&H7EB17CBD")
CRC32Table(14) = HexDec("&HE7B82D07")
CRC32Table(15) = HexDec("&H90BF1D91")
CRC32Table(16) = HexDec("&H1DB71064")
CRC32Table(17) = HexDec("&H6AB020F2")
CRC32Table(18) = HexDec("&HF3B97148")
CRC32Table(19) = HexDec("&H84BE41DE")
CRC32Table(20) = HexDec("&H1ADAD47D")
CRC32Table(21) = HexDec("&H6DDDE4EB")
CRC32Table(22) = HexDec("&HF4D4B551")
CRC32Table(23) = HexDec("&H83D385C7")
CRC32Table(24) = HexDec("&H136C9856")
CRC32Table(25) = HexDec("&H646BA8C0")
CRC32Table(26) = HexDec("&HFD62F97A")
CRC32Table(27) = HexDec("&H8A65C9EC")
CRC32Table(28) = HexDec("&H14015C4F")
CRC32Table(29) = HexDec("&H63066CD9")
CRC32Table(30) = HexDec("&HFA0F3D63")
CRC32Table(31) = HexDec("&H8D080DF5")
CRC32Table(32) = HexDec("&H3B6E20C8")
CRC32Table(33) = HexDec("&H4C69105E")
CRC32Table(34) = HexDec("&HD56041E4")
CRC32Table(35) = HexDec("&HA2677172")
CRC32Table(36) = HexDec("&H3C03E4D1")
CRC32Table(37) = HexDec("&H4B04D447")
CRC32Table(38) = HexDec("&HD20D85FD")
CRC32Table(39) = HexDec("&HA50AB56B")
CRC32Table(40) = HexDec("&H35B5A8FA")
CRC32Table(41) = HexDec("&H42B2986C")
CRC32Table(42) = HexDec("&HDBBBC9D6")
CRC32Table(43) = HexDec("&HACBCF940")
CRC32Table(44) = HexDec("&H32D86CE3")
CRC32Table(45) = HexDec("&H45DF5C75")
CRC32Table(46) = HexDec("&HDCD60DCF")
CRC32Table(47) = HexDec("&HABD13D59")
CRC32Table(48) = HexDec("&H26D930AC")
CRC32Table(49) = HexDec("&H51DE003A")
CRC32Table(50) = HexDec("&HC8D75180")
CRC32Table(51) = HexDec("&HBFD06116")
CRC32Table(52) = HexDec("&H21B4F4B5")
CRC32Table(53) = HexDec("&H56B3C423")
CRC32Table(54) = HexDec("&HCFBA9599")
CRC32Table(55) = HexDec("&HB8BDA50F")
CRC32Table(56) = HexDec("&H2802B89E")
CRC32Table(57) = HexDec("&H5F058808")
CRC32Table(58) = HexDec("&HC60CD9B2")
CRC32Table(59) = HexDec("&HB10BE924")
CRC32Table(60) = HexDec("&H2F6F7C87")
CRC32Table(61) = HexDec("&H58684C11")
CRC32Table(62) = HexDec("&HC1611DAB")
CRC32Table(63) = HexDec("&HB6662D3D")
CRC32Table(64) = HexDec("&H76DC4190")
CRC32Table(65) = HexDec("&H1DB7106")
CRC32Table(66) = HexDec("&H98D220BC")
CRC32Table(67) = HexDec("&HEFD5102A")
CRC32Table(68) = HexDec("&H71B18589")
CRC32Table(69) = HexDec("&H6B6B51F")
CRC32Table(70) = HexDec("&H9FBFE4A5")
CRC32Table(71) = HexDec("&HE8B8D433")
CRC32Table(72) = HexDec("&H7807C9A2")
CRC32Table(73) = HexDec("&HF00F934")
CRC32Table(74) = HexDec("&H9609A88E")
CRC32Table(75) = HexDec("&HE10E9818")
CRC32Table(76) = HexDec("&H7F6A0DBB")
CRC32Table(77) = HexDec("&H86D3D2D")
CRC32Table(78) = HexDec("&H91646C97")
CRC32Table(79) = HexDec("&HE6635C01")
CRC32Table(80) = HexDec("&H6B6B51F4")
CRC32Table(81) = HexDec("&H1C6C6162")
CRC32Table(82) = HexDec("&H856530D8")
CRC32Table(83) = HexDec("&HF262004E")
CRC32Table(84) = HexDec("&H6C0695ED")
CRC32Table(85) = HexDec("&H1B01A57B")
CRC32Table(86) = HexDec("&H8208F4C1")
CRC32Table(87) = HexDec("&HF50FC457")
CRC32Table(88) = HexDec("&H65B0D9C6")
CRC32Table(89) = HexDec("&H12B7E950")
CRC32Table(90) = HexDec("&H8BBEB8EA")
CRC32Table(91) = HexDec("&HFCB9887C")
CRC32Table(92) = HexDec("&H62DD1DDF")
CRC32Table(93) = HexDec("&H15DA2D49")
CRC32Table(94) = HexDec("&H8CD37CF3")
CRC32Table(95) = HexDec("&HFBD44C65")
CRC32Table(96) = HexDec("&H4DB26158")
CRC32Table(97) = HexDec("&H3AB551CE")
CRC32Table(98) = HexDec("&HA3BC0074")
CRC32Table(99) = HexDec("&HD4BB30E2")
CRC32Table(100) = HexDec("&H4ADFA541")
CRC32Table(101) = HexDec("&H3DD895D7")
CRC32Table(102) = HexDec("&HA4D1C46D")
CRC32Table(103) = HexDec("&HD3D6F4FB")
CRC32Table(104) = HexDec("&H4369E96A")
CRC32Table(105) = HexDec("&H346ED9FC")
CRC32Table(106) = HexDec("&HAD678846")
CRC32Table(107) = HexDec("&HDA60B8D0")
CRC32Table(108) = HexDec("&H44042D73")
CRC32Table(109) = HexDec("&H33031DE5")
CRC32Table(110) = HexDec("&HAA0A4C5F")
CRC32Table(111) = HexDec("&HDD0D7CC9")
CRC32Table(112) = HexDec("&H5005713C")
CRC32Table(113) = HexDec("&H270241AA")
CRC32Table(114) = HexDec("&HBE0B1010")
CRC32Table(115) = HexDec("&HC90C2086")
CRC32Table(116) = HexDec("&H5768B525")
CRC32Table(117) = HexDec("&H206F85B3")
CRC32Table(118) = HexDec("&HB966D409")
CRC32Table(119) = HexDec("&HCE61E49F")
CRC32Table(120) = HexDec("&H5EDEF90E")
CRC32Table(121) = HexDec("&H29D9C998")
CRC32Table(122) = HexDec("&HB0D09822")
CRC32Table(123) = HexDec("&HC7D7A8B4")
CRC32Table(124) = HexDec("&H59B33D17")
CRC32Table(125) = HexDec("&H2EB40D81")
CRC32Table(126) = HexDec("&HB7BD5C3B")
CRC32Table(127) = HexDec("&HC0BA6CAD")
CRC32Table(128) = HexDec("&HEDB88320")
CRC32Table(129) = HexDec("&H9ABFB3B6")
CRC32Table(130) = HexDec("&H3B6E20C")
CRC32Table(131) = HexDec("&H74B1D29A")
CRC32Table(132) = HexDec("&HEAD54739")
CRC32Table(133) = HexDec("&H9DD277AF")
CRC32Table(134) = HexDec("&H4DB2615")
CRC32Table(135) = HexDec("&H73DC1683")
CRC32Table(136) = HexDec("&HE3630B12")
CRC32Table(137) = HexDec("&H94643B84")
CRC32Table(138) = HexDec("&HD6D6A3E")
CRC32Table(139) = HexDec("&H7A6A5AA8")
CRC32Table(140) = HexDec("&HE40ECF0B")
CRC32Table(141) = HexDec("&H9309FF9D")
CRC32Table(142) = HexDec("&HA00AE27")
CRC32Table(143) = HexDec("&H7D079EB1")
CRC32Table(144) = HexDec("&HF00F9344")
CRC32Table(145) = HexDec("&H8708A3D2")
CRC32Table(146) = HexDec("&H1E01F268")
CRC32Table(147) = HexDec("&H6906C2FE")
CRC32Table(148) = HexDec("&HF762575D")
CRC32Table(149) = HexDec("&H806567CB")
CRC32Table(150) = HexDec("&H196C3671")
CRC32Table(151) = HexDec("&H6E6B06E7")
CRC32Table(152) = HexDec("&HFED41B76")
CRC32Table(153) = HexDec("&H89D32BE0")
CRC32Table(154) = HexDec("&H10DA7A5A")
CRC32Table(155) = HexDec("&H67DD4ACC")
CRC32Table(156) = HexDec("&HF9B9DF6F")
CRC32Table(157) = HexDec("&H8EBEEFF9")
CRC32Table(158) = HexDec("&H17B7BE43")
CRC32Table(159) = HexDec("&H60B08ED5")
CRC32Table(160) = HexDec("&HD6D6A3E8")
CRC32Table(161) = HexDec("&HA1D1937E")
CRC32Table(162) = HexDec("&H38D8C2C4")
CRC32Table(163) = HexDec("&H4FDFF252")
CRC32Table(164) = HexDec("&HD1BB67F1")
CRC32Table(165) = HexDec("&HA6BC5767")
CRC32Table(166) = HexDec("&H3FB506DD")
CRC32Table(167) = HexDec("&H48B2364B")
CRC32Table(168) = HexDec("&HD80D2BDA")
CRC32Table(169) = HexDec("&HAF0A1B4C")
CRC32Table(170) = HexDec("&H36034AF6")
CRC32Table(171) = HexDec("&H41047A60")
CRC32Table(172) = HexDec("&HDF60EFC3")
CRC32Table(173) = HexDec("&HA867DF55")
CRC32Table(174) = HexDec("&H316E8EEF")
CRC32Table(175) = HexDec("&H4669BE79")
CRC32Table(176) = HexDec("&HCB61B38C")
CRC32Table(177) = HexDec("&HBC66831A")
CRC32Table(178) = HexDec("&H256FD2A0")
CRC32Table(179) = HexDec("&H5268E236")
CRC32Table(180) = HexDec("&HCC0C7795")
CRC32Table(181) = HexDec("&HBB0B4703")
CRC32Table(182) = HexDec("&H220216B9")
CRC32Table(183) = HexDec("&H5505262F")
CRC32Table(184) = HexDec("&HC5BA3BBE")
CRC32Table(185) = HexDec("&HB2BD0B28")
CRC32Table(186) = HexDec("&H2BB45A92")
CRC32Table(187) = HexDec("&H5CB36A04")
CRC32Table(188) = HexDec("&HC2D7FFA7")
CRC32Table(189) = HexDec("&HB5D0CF31")
CRC32Table(190) = HexDec("&H2CD99E8B")
CRC32Table(191) = HexDec("&H5BDEAE1D")
CRC32Table(192) = HexDec("&H9B64C2B0")
CRC32Table(193) = HexDec("&HEC63F226")
CRC32Table(194) = HexDec("&H756AA39C")
CRC32Table(195) = HexDec("&H26D930A")
CRC32Table(196) = HexDec("&H9C0906A9")
CRC32Table(197) = HexDec("&HEB0E363F")
CRC32Table(198) = HexDec("&H72076785")
CRC32Table(199) = HexDec("&H5005713")
CRC32Table(200) = HexDec("&H95BF4A82")
CRC32Table(201) = HexDec("&HE2B87A14")
CRC32Table(202) = HexDec("&H7BB12BAE")
CRC32Table(203) = HexDec("&HCB61B38")
CRC32Table(204) = HexDec("&H92D28E9B")
CRC32Table(205) = HexDec("&HE5D5BE0D")
CRC32Table(206) = HexDec("&H7CDCEFB7")
CRC32Table(207) = HexDec("&HBDBDF21")
CRC32Table(208) = HexDec("&H86D3D2D4")
CRC32Table(209) = HexDec("&HF1D4E242")
CRC32Table(210) = HexDec("&H68DDB3F8")
CRC32Table(211) = HexDec("&H1FDA836E")
CRC32Table(212) = HexDec("&H81BE16CD")
CRC32Table(213) = HexDec("&HF6B9265B")
CRC32Table(214) = HexDec("&H6FB077E1")
CRC32Table(215) = HexDec("&H18B74777")
CRC32Table(216) = HexDec("&H88085AE6")
CRC32Table(217) = HexDec("&HFF0F6A70")
CRC32Table(218) = HexDec("&H66063BCA")
CRC32Table(219) = HexDec("&H11010B5C")
CRC32Table(220) = HexDec("&H8F659EFF")
CRC32Table(221) = HexDec("&HF862AE69")
CRC32Table(222) = HexDec("&H616BFFD3")
CRC32Table(223) = HexDec("&H166CCF45")
CRC32Table(224) = HexDec("&HA00AE278")
CRC32Table(225) = HexDec("&HD70DD2EE")
CRC32Table(226) = HexDec("&H4E048354")
CRC32Table(227) = HexDec("&H3903B3C2")
CRC32Table(228) = HexDec("&HA7672661")
CRC32Table(229) = HexDec("&HD06016F7")
CRC32Table(230) = HexDec("&H4969474D")
CRC32Table(231) = HexDec("&H3E6E77DB")
CRC32Table(232) = HexDec("&HAED16A4A")
CRC32Table(233) = HexDec("&HD9D65ADC")
CRC32Table(234) = HexDec("&H40DF0B66")
CRC32Table(235) = HexDec("&H37D83BF0")
CRC32Table(236) = HexDec("&HA9BCAE53")
CRC32Table(237) = HexDec("&HDEBB9EC5")
CRC32Table(238) = HexDec("&H47B2CF7F")
CRC32Table(239) = HexDec("&H30B5FFE9")
CRC32Table(240) = HexDec("&HBDBDF21C")
CRC32Table(241) = HexDec("&HCABAC28A")
CRC32Table(242) = HexDec("&H53B39330")
CRC32Table(243) = HexDec("&H24B4A3A6")
CRC32Table(244) = HexDec("&HBAD03605")
CRC32Table(245) = HexDec("&HCDD70693")
CRC32Table(246) = HexDec("&H54DE5729")
CRC32Table(247) = HexDec("&H23D967BF")
CRC32Table(248) = HexDec("&HB3667A2E")
CRC32Table(249) = HexDec("&HC4614AB8")
CRC32Table(250) = HexDec("&H5D681B02")
CRC32Table(251) = HexDec("&H2A6F2B94")
CRC32Table(252) = HexDec("&HB40BBE37")
CRC32Table(253) = HexDec("&HC30C8EA1")
CRC32Table(254) = HexDec("&H5A05DF1B")
CRC32Table(255) = HexDec("&H2D02EF8D")

End Sub