Вычисление CRC32 на Lua

Опубликовано в QLua

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

Недостаточно прав для комментирования

Архив QLua