将数字转换为lua中的字母对应数字

时间:2015-12-22 00:51:00

标签: lua

我正在尝试制作一个lua脚本,它接受逗号分隔的数字输入,然后将它们变成字母,所以1 =等等,但是我还没有找到一种方法来轻松完成这个,因为字符串libray输出了= 97,所以我不知道现在去哪里,有什么帮助?

4 个答案:

答案 0 :(得分:4)

您可以使用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

这将为“a”返回1,为“b”返回2,依此类推。您可以以类似的方式处理“A”,“B”等。

如果你需要数字到字符,那么这样的事情可能有效:

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

答案 1 :(得分:2)

仅仅考虑ascii table.

中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

答案 2 :(得分:1)

除了这些答案之外,您还可以将每个字母存储在表格中,然后将表格编入索引:

local letters = {'a','b','c'} --Finish

print(letters[1], letters[2], letters[3])

答案 3 :(得分:0)

按如下方式定义编码:

++level;
leftViewUtil(root.left, level, max, result);
leftViewUtil(root.right, level, max, result);

以任何你想要的顺序。 然后按如下方式使用

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 中使用char[t[i]]

相关问题