将数字转换为其在 Lua 中的字母对应项

我正在尝试制作一个Lua脚本,它接受由逗号分隔的数字输入,并将它们转换为字母,例如1=a等等。然而,我发现这很难做到,因为字符串库输出的是a=97,所以我不知道该怎么做了。请问有什么帮助吗?

点赞
用户1442917
用户1442917

你可以使用 string.bytestring.char 函数:

string.char(97) == "a"
string.byte("a") == 97

如果你想从 "a" (97) 开始,只需减去该数字:

local function ord(char)
  return string.byte(char)-string.byte("a")+1
end

这将返回 1 代表 "a",2 代表 "b",以此类推。你可以使用类似的方法处理 "A","B" 和其他字符。

如果你需要数字转字符,则可以使用以下代码:

local function char(num)
  return string.char(string.byte("a")+num-1)
end
2015-12-22 01:02:12
用户3924687
用户3924687

仅仅考虑 ascii 表格中小写字母 a-z 的起始值。

function convert(...)
    local ar = {...}
    local con = {}
    for i,v in pairs(ar) do
        table.insert(con, ("").char(v+96))
    end
    return con;
end

for i,v in pairs(convert(1,2,3,4)) do
    print(v)
end
2015-12-22 01:06:40
用户107090
用户107090

定义你的编码如下:

encoding = [[abc...]]

你可以按任何顺序。然后使用它如下:

function char(i)
   return encoding:sub(i,i)
end

如果数字列表在一个表中,那么可以使用

function decode(t)
   for i=1,#t do t[i]=char(t[i]) end
   return table.concat(t)
end

你还可以保存解码在一个表中:

char = {}
for i=1,#encoding do char[i]=encoding:sub(i,i) end

然后在 decode 中使用 char[t[i]]

2015-12-22 01:17:00
用户3979429
用户3979429

另外一种方法是使用表格存储每个字母并简单地索引表格:

local letters = {'a','b','c'} --完成

print(letters[1], letters[2], letters[3])
2015-12-22 04:03:49