将简单lua代码转换为C#

将简单lua代码转换为C#,c#,lua,C#,Lua,我在lua中有一个简单的代码,我需要将其翻译成C#,但我无法做到这一点,因为我不理解lua代码。 代码是: function ToText(str) local res = "" local dtable = "4\rw+6d\b2aQ9\025\006Lu35\"$xPS)[@Y\024'G7U\001c\000W>1ti*=\021\020kB&\004e\019\031pE%D`H\003.<\016\026\023\017bN:\a,8(jm{\028r\01

我在lua中有一个简单的代码,我需要将其翻译成C#,但我无法做到这一点,因为我不理解lua代码。 代码是:

function ToText(str)
  local res = ""
  local dtable = "4\rw+6d\b2aQ9\025\006Lu35\"$xPS)[@Y\024'G7U\001c\000W>1ti*=\021\020kB&\004e\019\031pE%D`H\003.<\016\026\023\017bN:\a,8(jm{\028r\014l- ]v\002f|\029R\vZy\005V^\n#C}~g_oz;\030hO\\As\f0!/X?\tMq\022IKTn\018\027J\015F"
  for i = 1, #str do
    local b = str:byte(i)
    if b > 0 and b <= 127 then
      res = res .. string.char(dtable:byte(b))
    else
      res = res .. string.char(b)
    end
  end
  return res
end
函数ToText(str) 本地res=“”
local dtable=“4\rw+6d\b2aQ9\025\006Lu35\”$xPS)[@Y\024'G7U\001c\000W>1ti*=\021\020kB&\004e\019\031pE%D`H\003。逐字翻译大致如此,尽管我仍然不确定这个
dtable
变量您可能想检查LUA是如何转义的

public static string ToText(this string str)
{
  var result = new StringBuilder();
  var dtable = "4\rw+6d\b2aQ9\025\006Lu35\"$xPS)[@Y\024'G7U\001c\000W>1ti*=\021\020kB&\004e\019\031pE%D`H\003.<\016\026\023\017bN:\a,8(jm{\028r\014l- ]v\002f|\029R\vZy\005V^\n#C}~g_oz;\030hO\\As\f0!/X?\tMq\022IKTn\018\027J\015F";

foreach(Char c in str)
{
  var byteValue = Convert.ToByte(c);
  if(byteValue > 0 && byteValue <= 127(
  {
    result.Append(dtable[byteValue]);
  }
  else
  {
    result.Append(c);
  }
 }

return result;
}
公共静态字符串ToText(此字符串str)
{
var result=新的StringBuilder();

var dtable=“4\rw+6d\b2aQ9\025\006Lu35\”$xPS)[@Y\024'G7U\001c\000W>1ti*=\021\020kB&\004e\019\031pE%D`H\003。恐怕我们不是来为您编写代码的。如果您的代码有问题,请尽管问!是的,我在代码中有问题,因为我不知道这意味着什么:local b=str:byte(I)res=res...string.char(dtable:byte(b))在C语言方面。所有Lua字符串文字必须是,之后你可以在更正确的版本中使用它们,非常感谢!!!你救了我一天。谢谢。我得到了类似的代码,但即使是你的代码也返回了一些奇怪的字符,而不是可读的代码。例如,输入是:string stri=“\022&\t!'Ol0O3K'@M'e'&Oz\tO%\017OH0&K\015DO\teOQO!\tl&'O['\006'&0OpO\026d\015Ol00O\015Q'\006'lDO!dOl0Oe\0060Oz\t!h\te':“输出应该是:Staci se priblizit na 15 metru,az v casti Vidite/你可以看到uvidis,co se zde nachazi。但是它是:==0Q'1.1i.H1 01m10.9Q.*2.%i0H*13.Qm.'Q101.11i 10i.=j*1.1i.*11 i 113.'j.1i.m i.9Q'2Qm1B@JimMasters这是因为您的输入和dtable都是以某种方式编码的(看起来像unicode)。因此,您需要找到此编码并替换dtable和输入字符串。就像我在回答中所说的,您需要检查转义(和/或编码).听起来不太容易,但我会尽力的。谢谢你。@JimMasters它看起来有点像ASCII八进制,但很难确定。我会尝试用谷歌搜索一下,但如果不成功,我可能会使用原始的lua代码,并尝试在C#中使用它。