BBS: Inland Empire Archive Date: 02-14-93 (22:02) Number: 304 From: DOUGLAS LUSHER Refer#: NONE To: ALL Recvd: NO Subj: CRC16 Conf: (2) Quik_Bas
Someone requested code for 16 bit CRC not long ago. Some code was posted in response, but I thought I would post mine too. This routine should be much faster than the code posted previously, and if speed is critical, this can be made to run even faster with just a bit of ASM code. If some one requests it, I will post that. Also note that the previously posted code returns the CRC in a long integer, my routine returns an integer. DEFINT A-Z FUNCTION CRC16% (Target$) 'returns the 16 bit CRC for the supplied string 'by Douglas H. Lusher, 13 Feb 1993 STATIC Initialized%, CRCTable%() IF Initialized% GOTO CalcCRC16 REDIM CRCTable%(255) FOR Ptr% = 0 TO 255 CRC& = Ptr% * 256& FOR Bit% = 0 TO 7 Carry% = ((CRC& AND &H8000) <> 0) CRC& = (CRC& * 2) AND &HFFFF& CRC& = CRC& XOR (Carry% AND &H1021) NEXT CRCTable%(Ptr%) = (CRC& - 32768) XOR &H8000 NEXT Initialized% = -1 CalcCRC16: CRC& = 0 FOR Ptr% = 1 TO LEN(Target$) Char% = ASC(MID$(Target$, Ptr%)) CRC& = CRC& * &H100 CRC& = CRCTable%(((CRC& AND &HFF0000)\ &H10000) XOR Char%) _ XOR (CRC& AND &HFF00&) 'append this to the line above NEXT CRC16% = ((CRC& AND &HFFFF&) - 32768) XOR &H8000 END FUNCTION --- TMail v1.30.4 * Origin: TC-AMS MLTBBS 2.2 - Minnetonka, MN (612)-938-4799 (1:282/7)
Books at Amazon:
Back to BASIC: The History, Corruption, and Future of the Language
Hackers: Heroes of the Computer Revolution (including Tiny BASIC)
Go to: The Story of the Math Majors, Bridge Players, Engineers, Chess Wizards, Scientists and Iconoclasts who were the Hero Programmers of the Software Revolution
The Advent of the Algorithm: The Idea that Rules the World
Moths in the Machine: The Power and Perils of Programming
Mastering Visual Basic .NET