32 lines
812 B
Text
32 lines
812 B
Text
PRINT HEX$(crc32("The quick brown fox jumps over the lazy dog"))
|
|
|
|
FUNCTION crc32~& (buf AS STRING)
|
|
STATIC table(255) AS _UNSIGNED LONG
|
|
STATIC have_table AS _BYTE
|
|
DIM crc AS _UNSIGNED LONG, k AS _UNSIGNED LONG
|
|
DIM i AS LONG, j AS LONG
|
|
|
|
IF have_table = 0 THEN
|
|
FOR i = 0 TO 255
|
|
k = i
|
|
FOR j = 0 TO 7
|
|
IF (k AND 1) THEN
|
|
k = _SHR(k, 1)
|
|
k = k XOR &HEDB88320
|
|
ELSE
|
|
k = _SHR(k, 1)
|
|
END IF
|
|
table(i) = k
|
|
NEXT
|
|
NEXT
|
|
have_table = -1
|
|
END IF
|
|
|
|
crc = NOT crc ' crc = &Hffffffff
|
|
|
|
FOR i = 1 TO LEN(buf)
|
|
crc = (_SHR(crc, 8)) XOR table((crc AND &HFF) XOR ASC(buf, i))
|
|
NEXT
|
|
|
|
crc32~& = NOT crc
|
|
END FUNCTION
|