RosettaCodeData/Task/CRC-32/M2000-Interpreter/crc-32-1.m2000
2025-02-27 18:35:13 -05:00

30 lines
859 B
Text

odule CheckIt {
crc32 = lambda ->{
Function PrepareTable {
buffer t as long * 256
For i = 0 To 255
k = i
For j = 0 To 7
If binary.and(k,1)=1 Then
k =binary.Xor(binary.shift(k, -1) , 0xEDB88320)
Else
k=binary.shift(k, -1)
End If
Next
Return t, i:=k
Next
=t
}
= lambda crctable=PrepareTable() (c, buf$) -> {
crc=0xFFFFFFFF-c
For i = 1 To Len(buf$)
crc = binary.xor(binary.shift(crc, -8), eval(crctable, binary.xor(binary.and(crc, 0xff), asc(mid$(buf$, i, 1)))))
Next i
=0xFFFFFFFF-crc
}
}() ' execute now
Print crc32(0, "The quick brown fox jumps over the lazy dog")=0x414fa339&
Print crc32(crc32(0, "The quick brown fox jumps"), " over the lazy dog")=0x414fa339&
Print crc32(crc32(crc32(0, "The qu"), "ick brown"), " fox jumps over the lazy dog")=0x414fa339&
}
CheckIt