如何创建并编辑二进制数据数组,以便通过UDP进行序列化?
2016-8-15 13:13:52
收藏:0
阅读:94
评论:1
我正在尝试弄清楚在lua中可以使用哪些存储类来按字节创建和操作二进制数据。
例如Qt有QByteArray,或c++/c有数组char(或uint8_t)。我觉得字符串不会起作用,因为我需要处理诸如0x00和其他不可打印字符之类的值。我还研究了数组,但它们似乎没有类型,我不确定如何将它们序列化。
我有点卡住了,我将尝试在下面提供代码示例:
local socket = require(\“socket \”)
- 这不起作用,只是为了展示我梦想做什么
- | len | type |负载|
local msgData = {0x05,0x3A,0x00,0xF4,0x04}
- 编辑部分负载
msgData [3] = 0x01
-通过UDP将其发送
udp:sendto(msgData,“127.0.0.1”,50000);
然后在另一侧,我想读取那些二进制数据:
- 这是我通常读取数据的方法,但“数据”我想只是一个字符串,如何收集二进制数据?
数据,ip,端口= udp:receivefrom()
-数据= udp:receive()
如果数据,则
print(“RX UDP:”..数据..“-来自:”.. ip ..“:”.. port)
结束
抱歉示例的质量不太好,但我没有任何可用的东西,也不知道如何实现这一点...
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在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 代码?

Lua 字符串是为了容纳二进制值而设计的,尽管在字符串中操作单个字符有点棘手,但在 Lua 中可以将二进制值视为字符来操作,只要记住 Lua 字符串是不可变的,并且知道
ord和char方法即可。例如:tst = '012345' print(tst) tst = string.char(string.byte(tst, 1) + 1) .. string.sub(tst, 2) print(tst)以这种方式操作,您可以对单个字符进行任何形式的转换。
希望这有所帮助。
附加示例:
-- 从十六进制值创建字符串 binstr = string.char(0x41, 0x42, 0x43, 0x00, 0x02, 0x33, 0x48) -- 以十进制打印字节 print(string.byte(binstr, 1, string.len(binstr))) -- 以十六进制打印值 for i = 1, string.len(binstr), 1 do io.write(string.format("%x ", string.byte(binstr, i))) end io.write("\n") -- 打印长度 print("len = ", string.len(binstr))