从C++向Lua脚本方法传递字节数组。
2011-5-31 14:31:13
收藏:0
阅读:124
评论:2
我怎样才能从 C++ 代码将一个 byte 数组作为参数传递给 Lua 脚本方法呢? 只允许使用 int、float 或 string 数据类型吗? 同时,我怎样才能从 Lua 脚本方法中检索到 byte 数组呢? 我将传递一个原始的 byte 数组到脚本中。它会解析并使用它。 谢谢。
原文链接 https://stackoverflow.com/questions/6189149
点赞
stackoverflow用户404568
这取决于你要做什么。Lua 字符串是不可变的字节数组,所以如果它们很小,最好的方法可能是使用 lua_pushlstring
将字节数组转换为字符串,然后像那样传递---是的,嵌入的 \0 是支持且正常工作的。但是由于它们是不可变的,每次想要修改它们时 Lua 都会复制字符串,因此它可能不适合你的要求。
其他选项包括:
在 C++ 字节数组和 Lua 数组(也就是数字表)之间来回复制数据。这将非常昂贵的内存,但可能是最简单的方式。
用轻量的 userdata 包装 C++ 字节数组,并提供 Lua 绑定以允许你直接访问它。这是最有效的,但需要编写相当多的代码。
2011-05-31 14:46:18
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?
- addEventListener 返回 nil Lua
- Lua中获取用户配置主目录的跨平台方法
- 如何编写 Lua 模式将字符串(嵌套数组)转换为真正的数组?
整型和浮点型的值将被转换为 Lua 的数字类型(默认为
double
)。如果脚本本身只需要保留一个指针以在函数之间传递,通常会将 C 数据块作为轻量级用户数据进行推送:
当向 Lua 传递字节数组时,通常使用字符串(可以使用
lua_pushlstring
创建任意数据的字符串):lua_pushlstring (L, bufptr, buflen);
这将在 Lua 中创建一个不可变字符串,只能通过创建新的字符串来修改。
如果需要在 Lua 中使用可变的字节缓冲区(不建议使用——低级字节操作是 C 的设计目标,而 Lua 不是),最好是为该缓冲区创建一个 userdata 类型,并添加适合用例的获取和设置方法(将单个位置作为数字,将范围作为字符串或数字表格)。