Lua:特定情况的代码片段

时间:2017-12-07 14:11:41

标签: lua

我在Lua中创建(差)加密脚本,为此,我需要创建一个循环,它将为字符串中的每个数字返回一个值,例如:< / p>

Input: 15, 18, 1, 20, 15, 18, 15, 5, 21, 1, 18, 15, 21, 16, 1, 4, 15, 18, 5, 9, 4, 5, 18, 15, 13, 1

我希望它将这些数字中的每一个返回到一个函数,该函数将对它们进行一定的数学运算,然后返回每个结果数字的对应字母(15将变为&#39; o&#39;,18将成为&#39;等等)

详细解释,我需要一段代码插入到一个函数中:

  1. 将字符串中的每个数字都返回给函数。

  2. 此后,该功能需要将数字转换为字母(如前所述)。

  3. 然后新函数需要将结果字母插入新字符串中。

  4. 这是一个如何表现的简短例子。

    Input: 8, 5, 12, 12, 15
    Result: 26, 7, 15, 15, 12 (These numbers aren't constant because of a hidden math made inside the function.)
    
    Input: 26, 7, 15, 15, 12
    Result: z, g, o, o, l
    
    Input: z, g, o, o, l
    Result: "zgool"
    

    我认为这个项目的源代码对于这个场合来说并不是必需的,我只是将这个代码实现到脚本上的函数中。请,某人(了解我的意思)可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

local function my_poor_cryptography(s)
   local codes = {}
   -- string to numbers
   for c in s:gmatch"%a" do
      table.insert(codes, c:byte() - (c:find"%l" and 96 or 64))
   end
   -- math here (https://en.wikipedia.org/wiki/ROT13)
   for j = 1, #codes do
      codes[j] = (codes[j] + 12) % 26 + 1
   end
   -- numbers to string
   s = s:gsub("%a", 
      function(c) 
         return c.char(table.remove(codes, 1) + (c:find"%l" and 96 or 64)) 
      end)
   return s
end

用法:

local str = "Hello, World!"
str = my_poor_cryptography(str)
print(str)     --> Uryyb, Jbeyq!
str = my_poor_cryptography(str)
print(str)     --> Hello, World!