voxelcore/doc/ru/scripting/bytearray.md
Xertis 32feb78002
Improved docs (#708)
* начало переписи доков

* extensions update

* libapp update

* libfile update

* io_stream update

* Update io_stream.md

* io_stream update x3

* io_stream update x4

* libtime update

* libgui update + make bytearray.md

* libinput update

* Update libapp.md

* Update libapp.md

* libgui update

* events.md ru fix

* да ну не надо так делать

--> не имеет смысла, ибо гитхаб -> показывает адекватно

* types refactoring

* fixes

* Update libblock.md

* Update libblock.md

* Update libbyteutil.md
2025-12-18 12:58:39 +03:00

2.2 KiB
Raw Blame History

Класс Bytearray

Bytearray - динамический байтовый массив, реализованный через LuaJIT FFI. По нему можно итерироваться стандартными функциями pairs и ipairs

Основное

Создание массива

local bytes = Bytearray()           -- пустой
local bytes = Bytearray("hello")    -- из строки
local bytes = Bytearray({1,2,3})    -- из таблицы чисел

Методы

-- Добавляет элемент(ы) в конец массива.
bytes:append(value: int)
bytes:append(values: Bytearray | table<int>)

-- Вставляет данные по индексу.
bytes:insert(index: int, value: int)

-- Удаляет элемент(ы), если передан `count`, удалит `count` кол-во элементов с выбранного индекса.
bytes:remove(index: int, [опционально] count: int)

-- Очищает массив
bytes:clear()

-- Создаёт новый Bytearray, содержащий копию части данных с offset до offset+length
bytes:slice(offset: int, length: int) -> Bytearray

View

Это "вьюшки" поверх Bytearray, которые интерпретируют его байты как массив чисел другого размера - без копирования данных.

Не имеет своих методов, является просто объектной ссылкой на оригинальный Bytearray.

Класс Тип элементов Размер
I16view int16_t 2 байта
U16view uint16_t 2 байта
I32view int32_t 4 байта
U32view uint32_t 4 байта

Пример использования

local bytes = Bytearray({1, 0, 2, 0, 250, 255})

local u16 = U16view(bytes)
local i16 = I16view(bytes)

print(u16[1]) -- 1
print(u16[2]) -- 2
print(i16[3]) -- -6 (signed вьюшка)

for _, num in ipairs(i16) do
    print(num)
end -- 1; 2; -6