25 lines
543 B
Text
25 lines
543 B
Text
global table[] .
|
|
proc mktable .
|
|
for i = 0 to 0xff
|
|
rem = i
|
|
for j to 8
|
|
if bitand rem 1 = 1
|
|
rem = bitxor bitshift rem -1 0xedb88320
|
|
else
|
|
rem = bitshift rem -1
|
|
.
|
|
.
|
|
table[] &= rem
|
|
.
|
|
.
|
|
func crc32 s$ .
|
|
crc = 0xffffffff
|
|
for c$ in strchars s$
|
|
c = strcode c$
|
|
crb = bitxor bitand crc 0xff c
|
|
crc = bitxor (bitshift crc -8) table[crb + 1]
|
|
.
|
|
return bitand bitnot crc 0xffffffff
|
|
.
|
|
mktable
|
|
print crc32 "The quick brown fox jumps over the lazy dog"
|