Вычисление CRC32 на Lua
Функция вычисления CRC32 на 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)))