Я пытаюсь выяснить, какие классы хранения есть, которые я могу использовать в lua для создания и обработки байтовых данных побайтно.Как создать и отредактировать массив двоичных данных, готовых для сериализации через UDP?
Например, Qt имеет QByteArray, или C++/c имеет массив char (или uint8_t). Я не чувствую, что строка будет работать, потому что мне нужно иметь дело с такими значениями, как 0x00 и другие непечатаемые символы. Также я просмотрел массивы, но у них вроде бы нет типа, и я не уверен, как их сериализовать.
Я немного застрял здесь, я попытаюсь сделать пример кода ниже:
local socket = require("socket")
-- this does not work, just to show what I am dreaming of doing
-- |len |type | payload |
local msgData = {0x05, 0x3A, 0x00, 0xF4, 0x04}
-- edit part of the payload
msgData[3] = 0x01
-- Send it over UDP
udp:sendto(msgData, "127.0.0.1", 50000);
Затем с другой стороны, я хочу прочитать, что двоичные данные обратно:
-- This is how I normally read the data, but "data" I guess is just a string, how can I collect the binary data?
data, ip, port = udp:receivefrom()
--data = udp:receive()
if data then
print("RX UDP: " .. data .. " - from: " .. ip .. ":" .. port)
end
К сожалению для качества примеров, но у меня нет ничего, что работает, и нет реальной идеи, как этого достичь ...
Почему вы думаете, строка Lua не будет работать для вас? Они явно предназначены для обработки двоичных данных, а документы Lua даже показывают, что они используются для чтения данных из двоичного файла: https://www.lua.org/pil/21.2.2.html – Feneric
@Feneric well .. Как я могу его манипулировать? и изменить элементы на нулевые или другие непечатаемые символы? - Я не нашел примеров этого. EDIT: hangon я только что видел вашу ссылку .... чтение –
@Feneric хорошо, я вижу части того, что я хочу в этом. Однако я до сих пор не вижу, как я могу добавить значение (например) 0x00 в местоположение 4 - или добавить 0xF3 в конце «строки» ... Я действительно прочитал много примеров/документов, но не могу достаточно найти эту информацию. (Я сам делаю двоичные строки - не читаю из файла) –