Перейти к основному содержимому

mp.checksum — 14 функций

Входные данные — 1-индексированные массивы байт.

ФункцияВозвратОписание
list_crc_presets()tableМассив {name, width, poly, init, reflect_in, reflect_out, xor_out}
crc(preset, bytes)table{value, hex, width, preset} или {error}
crc_custom(params, bytes)tableКастомный CRC; params = {name?, width, poly, init, reflect_in, reflect_out, xor_out}
crc_region(preset, r, start?, len?)tableCRC по региону (или под-диапазону)
sum8(bytes)int8-битная сумма
sum16(bytes)int16-битная сумма
sum16_inv(bytes)intИнвертированная 16-битная сумма (доп. код)
sum_rl78(bytes)intБлочная чексумма Renesas RL78 / NEC 78K
fletcher16(bytes)intFletcher-16
fletcher32(bytes)numberFletcher-32 (double из-за диапазона)
adler32(bytes)numberAdler-32 (double)
lrc(bytes)intLRC (longitudinal redundancy check)
bcc(bytes)intBCC (XOR-свёртка)
list_builtins()tableМассив {name, width} для всех встроенных не-CRC

Множественный возврат crc()

crc() возвращает три значения: (value, hex_string, info_table). Берите столько, сколько нужно — голое присваивание даёт просто число.

local v = mp.checksum.crc("CRC-32", data) -- 0xCBF43926 как число
local v, hex = mp.checksum.crc("CRC-32", data) -- "0xCBF43926"
local v, hex, info = mp.checksum.crc("CRC-32", data) -- info.{width, preset, error}

local v, hex = mp.checksum.crc_region("CRC-32", "Flash") -- весь регион
local v, hex = mp.checksum.crc_region("CRC-32", "Flash", 0, 256) -- слайс

mp.checksum.sum8(data) -- 8-bit сумма, int
mp.checksum.fletcher16(data)
mp.checksum.adler32(data)
mp.checksum.list_crc_presets() -- все доступные CRC

Для Lua-скриптов, рисующих чексум в статус-баре, см. Чексум-скрипты.