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) | int | Endian swap 16-bit |
swap32(v) | number | Endian 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"