将表格分割并发送十六进制密钥
2021-9-29 10:30:40
收藏:0
阅读:143
评论:1
我正在尝试将一个表格转换为十六进制密钥,并将这些密钥按照原始字符串的顺序存储在另一个表格中。
我找到了一个函数,使用一些在线帮助可以将一个字符串拆分为每个字符并将该字符分配给表格中的一个空间。
因此,如果我编写function("Hello World!"), 函数的返回值将是table={H,e,l,l,o,,W,o,r,l,d,!})
现在我需要将其限制为仅接受16个字符,并且任何超过该长度的字符均被丢弃。
该功能如下:
local str = "Hello World"
local chars = {}
for c in string.gmatch(str,".")do
chars[#chars+1]=c
end
我该如何将其限制为表格中的16个元素?
我的第二个问题是,在创建此表格之后,我如何改变此表格的每个元素为一个十六进制密钥,并按照原始字符串的顺序存储到另一个表格中?
编辑1:感谢luke10000建议使用if char..方法,它完美地运行。现在下一步是将其转换为十六进制并将其放入表格中。 我找到了一个可以执行此操作的函数,但完全没有解释,我只能将所有十六进制密钥打印到控制台上。
function hex_dump(buf)
for byte=1,#buf,16 do
local chunk=buf:sub(byte,byte+15)
--io.write(string.format('%08X ',byte-1)) — 0's
chunk:gsub('.',function(c)io.write(string.format('0x%X ',string.byte(c)))end)
io.write(string.rep(' ',3*(16-#chunk)),"\n")
--io.write(' ',chunk:gsub('%c','.'),"\n") — 将字符添加到十六进制密钥前面
end end
for _,chars in ipairs(chars) do
hex_dump(chars)end
原文链接 https://stackoverflow.com/questions/69372326
点赞
评论区的留言会收到邮件通知哦~
推荐文章
- 如何在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 模式将字符串(嵌套数组)转换为真正的数组?
我不确定你的帖子的其余部分与你实际的问题有关。
我也不确定你的“十六进制密钥”的意思。
local input = {"H", "e", "l", "l", "o", " ", "w", "o", "r", "l", "d", "!"} local output = {} for i,v in ipairs(input) do output[i] = string.format("0x%X", v:byte()) if i == 16 then break end end print(table.concat(output, ", "))
关于你的其他问题:
只需将输入字符串限制为16个字符。
for c in str:sub(1,16):gmatch(".") do
...如果你的实际问题是获取字符串的数字表示的表格,只需使用
string.byte
local str = "Hello world! This is a wonderful day.!" local output = table.pack(str:byte(1, 16))