Для Луа, посмотрите библиотеку Роберто struct .(Роберто является одним из авторов Lua.) Он является более общим, чем необходимо для конкретного рассматриваемого случая, но не исключено, что вскоре необходимость обмена int
сопровождается необходимостью обмена другими простыми типами.или более крупные структуры.
Если исходный порядок байтов приемлем с обеих сторон (что, впрочем, скорее всего, неверно), то вы можете преобразовать число в 4-байтовое целое с помощью:
buffer = struct.pack("l", value)
и обратноснова с:
value = struct.unpack ("l", buffer)
В обоих случаях buffer
- это строка Lua, содержащая байты.Если вам нужен доступ к отдельным значениям байтов из Lua, string.byte
- ваш друг.
Чтобы указать порядок байтов упакованных данных, измените формат с "l"
на "<l"
для little-endianили ">l"
для big-endian.
Модуль struct
реализован на C и должен быть скомпилирован в DLL или эквивалент для вашей платформы, прежде чем он будет использоваться Lua.Тем не менее, он входит в комплект Lua для Windows с батарейками, который является популярным способом установки Lua в системах Windows.