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?) | table | CRC по региону (или под-диапазону) |
sum8(bytes) | int | 8-битная сумма |
sum16(bytes) | int | 16-битная сумма |
sum16_inv(bytes) | int | Инвертированная 16-битная сумма (доп. код) |
sum_rl78(bytes) | int | Блочная чексумма Renesas RL78 / NEC 78K |
fletcher16(bytes) | int | Fletcher-16 |
fletcher32(bytes) | number | Fletcher-32 (double из-за диапазона) |
adler32(bytes) | number | Adler-32 (double) |
lrc(bytes) | int | LRC (longitudinal redundancy check) |
bcc(bytes) | int | BCC (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-скриптов, рисующих чексум в статус-баре, см. Чексум-скрипты.