将c#函数转换为PHP

本文关键字:PHP 转换 函数 | 更新日期: 2023-09-27 18:06:24

你们中有人能帮我一点吗?我在c#中有一个小方法,我想把它转换成PHP。不幸的是,我对PHP的了解非常有限。我希望有人能给我一些如何做到这一点的提示。我只是想说,我不是在找别人帮我做,只是帮我开始。

这是c#的方法。

    private static string decode(string str1, string str2)
    {
        StringBuilder builder = new StringBuilder(str1);
        StringBuilder builder2 = new StringBuilder(str2);
        StringBuilder builder3 = new StringBuilder(str1.Length);
        int num = 0;
    Label_0084:
        while (num < builder.Length)
        {
            int num2 = 0;
            while (num2 < p1.Length)
            {
                if ((num == builder.Length) || (num2 == builder2.Length))
                {
                    goto Label_0084;
                }
                char ch = builder[num];
                char ch2 = builder2[num2];
                ch = (char)(ch ^ ch2);
                builder3.Append(ch);
                num2++;
                num++;
            }
        }
        return builder3.ToString();
    }

有两件事我完全不确定,甚至不确定要搜索什么,这是StringBuilder的等效物。是否存在等价物?或者它真的有必要吗?然后这部分:

char ch = builder[num];
char ch2 = builder2[num2];
ch = (char)(ch ^ ch2);
builder3.Append(ch);

如何在PHP中复制?

希望有人能帮我阐明这一点。最好的问候,/瑞克

将c#函数转换为PHP

乍一看,这似乎是一个异或密码。提供的一个字符串是键,另一个字符串是之前被键异或过一次的字符串。再用关键字进行异或操作将得到原始字符串。

我会尝试重新实现代码,而不是逐字复制它,因为它不是特别好写(除非我对c#代码的意图是错误的,这可以重写为更可读的3或4行,不使用goto等)。这类东西好像有PHP的例子

jsc项目可以帮你把。net/c#转换成PHP。

  1. 概述:http://jsc.sf.net
  2. 来源:http://jsc.sourceforge.net/examples/web/OrcasAvalonWebApplication/
  3. 的例子:http://jsc.svn.sourceforge.net/viewvc/jsc/templates/OrcasAvalonWebApplication/

这听起来不错,但公认的答案是:

我知道你希望找一个有经验的人,但万一没有人是向前…

您可以考虑将代码复制并粘贴到PHP脚本中检查什么地方坏了。写一个解析器来解决这个问题,运行它整个剧本,看看下一个出问题的是什么。继续直到脚本按预期运行。

如果你不使用任何更复杂的。net类,我不能我想你会有很多麻烦的。

源码:如何将代码从c#转换为PHP

在PHP中确实不需要StringBuilder。只需像这样附加字符串:

$string = "start";
$string .= "appended string";
$string .= "appended string";

这是来自PHP手册关于访问字符串

中的字符

字符串中的字符可以通过在字符串后面使用方括号指定所需字符的从零开始的偏移量来访问和修改,如$str[42]。为此,可以将字符串视为字符数组。

你可以直接输入

$ch = $builder[$num];

最后,你可能想看看这篇文章,考虑xor的东西(ch1 ^ ch2):http://www.go4expert.com/forums/showthread.php?t=5555

正如你所看到的,语法就像c#一样,除了强制转换的东西。但是,我不能保证它是否会产生完全相同的输出。