Значения Int и float будут преобразованы в тип числа Lua (по умолчанию double
).
Если самому сценарию нужно просто сохранить указатель для передачи между функциями, большие двоичные данные в C обычно передаются как легкие пользовательские данные:
lua_pushlightuserdata(L, bufptr);
При передаче массивов байтов в Lua обычно используются строки (строки произвольных данных могут быть созданы с использованием lua_pushlstring
):
lua_pushlstring (L, bufptr, buflen);
Это создаст неизменную строку в Lua, которую можно изменить только путем создания новых строк.
Если вам нужно работать с изменяемыми байтовыми буферами в Lua (не рекомендуется - для байтов C была разработана низкоуровневая манипуляция, а для Lua - нет), лучше всего создать тип пользовательских данных для буфера с методами для получить и установить с учетом варианта использования (отдельные позиции как числа, диапазоны как строки или таблицы чисел).