Code archives/Algorithms/CRC32 - Checksum calculator
This code has been declared by its author to be Public Domain code.
Download source code
| |||||
here is clean and fast code for CRC32-checksum-calculating. Use it with string, bank or file... | |||||
Dim crc_table(255) crc_init() Print Hex$(crc_string("ABC")) Input Function crc_init() Local i Local j Local value For i=0 To 255 value=i For j=0 To 7 If (value And $1) Then value=(value Shr 1) Xor $EDB88320 Else value=(value Shr 1) EndIf Next crc_table(i)=value Next End Function Function crc_string(txt$) Local byte Local crc Local i Local size crc=$FFFFFFFF size=Len(txt$) For i=1 To size byte=Asc(Mid$(txt$,i,1)) crc=(crc Shr 8) Xor crc_table(byte Xor (crc And $FF)) Next Return ~crc End Function Function crc_bank(bank) Local byte Local crc Local i Local size crc=$FFFFFFFF size=BankSize(bank)-1 For i=0 To size byte=PeekByte(bank,i) crc=(crc Shr 8) Xor crc_table(byte Xor (crc And $FF)) Next Return ~crc End Function Function crc_file(name$) Local byte Local crc Local file crc=$FFFFFFFF file=ReadFile(name$) If file=0 Then Return While Not Eof(file) byte=ReadByte(file) crc=(crc Shr 8) Xor crc_table(byte Xor (crc And $FF)) Wend Return ~crc End Function |
Comments
| ||
Just a note in case someone else uses this code: Add a CloseFile file before the return in function crc_file, or you will be pulling your hair out when it suddenly stops working. |
Code Archives Forum