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

mp.utils — 43 функции

Hex ↔ bytes

ФункцияВозвратОписание
hex_to_bytes(hex)table"4865"{0x48, 0x65}
bytes_to_hex(bytes)string{0x48, 0x65}"4865"
bytes_to_string(bytes)stringМассив байт → сырая строка
string_to_bytes(s)tableСырая строка → массив байт
is_ascii(bytes)boolВсе байты — печатный ASCII (0x20..0x7E)
is_printable(bytes)boolПечатный + \t \n \r
byte_to_hex(b)string"AB" (2 символа)
word_to_hex(w)string"ABCD" (4 символа)
dword_to_hex(d)string"DEADBEEF" (8 символов)
hex_to_int(hex)numberПарсинг hex (до 64 бит)

Порядок байт

ФункцияВозвратОписание
swap16(v)intEndian swap 16-bit
swap32(v)numberEndian swap 32-bit
le16(lo, hi)intСборка LE 16-bit
be16(hi, lo)intСборка BE 16-bit
le32(b0, b1, b2, b3)numberСборка LE 32-bit (b0 = LSB)
be32(b0, b1, b2, b3)numberСборка BE 32-bit (b0 = MSB)

Битовые операции (поверх Lua 5.5 native)

ФункцияВозвратОписание
bit_set(v, bit)intУстановить бит
bit_clear(v, bit)intСбросить бит
bit_test(v, bit)boolПроверить бит
bit_toggle(v, bit)intПереключить бит
extract_bits(v, startBit, count)intИзвлечь bit field

Время

ФункцияВозвратОписание
timer()table{elapsed_ms(), elapsed_s(), restart()}
timestamp()numberмс с Unix epoch
datetime()string"yyyy-MM-dd HH:mm:ss"
date()string"yyyy-MM-dd"
time()string"HH:mm:ss"

JSON

ФункцияВозвратОписание
json_parse(s)table | nilПарсинг JSON object/array; nil при ошибке
json_encode(obj)stringФорматированный JSON. Пустые Lua-таблицы кодируются как [] (JSON массив). Чтобы получить пустой JSON-объект, передайте {__json_object = true}
json_encode_compact(obj)stringОднострочный JSON, та же семантика

Строковые помощники

ФункцияВозвратОписание
trim(s)stringСрезать ведущие/хвостовые пробелы
split(s, sep)tableРазделить
starts_with(s, prefix)bool
ends_with(s, suffix)bool
contains(s, sub)bool
to_upper(s)string
to_lower(s)string
replace(s, from, to)stringЗаменить все вхождения

Помощники для таблиц

ФункцияВозвратОписание
table_keys(t)tableМассив ключей
table_values(t)tableМассив значений
table_size(t)intВсего записей (включая нецелые ключи)

Примеры

mp.utils.hex_to_bytes("4865") -- {0x48, 0x65}
mp.utils.bytes_to_string({72, 101}) -- "He"
mp.utils.is_ascii({0x48, 0x65}) -- true
mp.utils.le32(0x78, 0x56, 0x34, 0x12) -- 0x12345678

local cfg = mp.utils.json_parse('{"target":"STM32F1"}')
local s = mp.utils.json_encode({a = 1, b = "x"})

local t = mp.utils.timer()
mp.sleep(100)
mp.log.info("прошло: " .. t:elapsed_ms() .. " мс")

mp.log.info(mp.utils.datetime()) -- "2026-05-08 14:30:00"