Lua中如何将table(表)数据转换为字符串?
Lua实现表转字符串的方法
Lua里的字符串是不可变的,没法像C那样直接通过索引赋值修改,但有几种简单方法能实现表转字符串:
方法1:用table.concat(效率最高,优先用)
如果你的表存的是ASCII字节值(对应C里的table[i]),可以先把每个字节转成字符,再用这个方法一次性拼接:
-- 示例:表中存A到J的ASCII码 local byte_table = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74} local char_list = {} for i, byte in ipairs(byte_table) do char_list[i] = string.char(byte) end local result_str = table.concat(char_list)
要是表本身已经存的是单个字符,直接调用table.concat(你的表)就行,不用额外转换。
方法2:逐个拼接字符(逻辑简单,小数据量适用)
因为字符串不可变,每次拼接都会生成新字符串,数据量大时效率偏低,但理解起来直观:
local byte_table = {65, 66, 67, 68, 69, 70, 71, 72, 73, 74} local result_str = "" -- 对应C里i从0到9的循环,Lua表默认从1开始,所以循环1到10 for i = 1, 10 do -- 把字节转成字符后追加到字符串 result_str = result_str .. string.char(byte_table[i]) end
补充:字符串转表的完整示例
你提到用:byte(i)实现反向操作,这里给个完整代码:
local str = "ABCDEFGHIJ" local byte_table = {} for i = 1, #str do byte_table[i] = str:byte(i) end -- byte_table现在就是{65,66,...,74}
内容的提问来源于stack exchange,提问作者terefere
相关产品推荐
相关产品推荐

