35 lines
611 B
Lua
35 lines
611 B
Lua
function crc32(buf, size)
|
|
local crc = 0xFFFFFFFF
|
|
local table = {}
|
|
local rem, c
|
|
|
|
-- calculate CRC-table
|
|
for i = 0, 0xFF do
|
|
rem = i
|
|
for j = 1, 8 do
|
|
if (rem & 1 == 1) then
|
|
rem = rem >> 1
|
|
rem = rem ~ 0xEDB88320
|
|
else
|
|
rem = rem >> 1
|
|
end
|
|
end
|
|
table[i] = rem
|
|
end
|
|
|
|
for x = 1, size do
|
|
c = buf[x]
|
|
crc = (crc >> 8) ~ table[(crc & 0xFF) ~ c]
|
|
end
|
|
return crc ~ 0xFFFFFFFF
|
|
end
|
|
|
|
|
|
local str = "The quick brown fox jumps over the lazy dog"
|
|
local t = {}
|
|
for i = 1, #str do
|
|
t[i] = str:byte(i)
|
|
end
|
|
|
|
print(string.format("CRC32: %x", crc32(t,#str)))
|