将简单的lua代码转换成C#

我有一段简单的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
点赞
用户2057955
用户2057955
将字符串转换为文本格式

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; }

```

以下是大致的逐字翻译,尽管我对 dtable 变量的实际含义存在些许疑虑,您可能需要查看一下 LUA 中是如何进行转义的。

“扩展方法:将字符串转换为文本格式。

使用 StringBuilder 定义结果变量。定义变量 dtable 为字符串“4 \ r w + 6 d \ b 2 a Q 9\ 025\ 006 Lu 35 \” $ xPS)[ @Y \ 024'G7U \ 001c \ 000W> 1 ti * = \ 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 确定每个字符的字节值。如果字节值大于 0 且小于等于 127,则将 dtable 中相应的元素添加到结果变量中。否则,将字符本身添加到结果变量中。

返回结果变量。”

2016-12-06 09:17:21