【问题标题】:Converting C# function to PHP将 C# 函数转换为 PHP
【发布时间】:2011-11-01 03:30: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 中复制它?

希望有人可以帮助我对此有所了解。 最好的祝福, /瑞克

【问题讨论】:

  • @Rickard,如果您注释代码中发生的事情可能会有所帮助。本人不熟悉 C#,无法帮助您,因为我不知道 ch ^ ch2 是做什么的。
  • c# 带有 goto X( 裸露的特殊情况...... baaaad。也许你会改进它转换它。
  • @nickf - 与 php 中的相同,它是 XOR。

标签: c# php


【解决方案1】:

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 类,我不能 想象一下你会遇到很多麻烦。

来源:How to convert code from C# to PHP

【讨论】:

  • 这对于一个函数来说似乎有点矫枉过正
【解决方案2】:

在 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# 中的一样,除了转换的东西。不过,我不能保证它是否会产生完全相同的输出。

【讨论】:

    【解决方案3】:

    乍一看,这似乎是XOR cipher。提供的一个字符串是键,另一个是之前已被键异或一次的字符串。再次与密钥进行异或运算会得到原始字符串。

    我会尝试重新实现代码,而不是逐字复制它,因为它写得不是特别好(除非我对 C# 代码的意图有误解,否则可以将其重写为更易读的 3 或 4 行,不使用 goto 等)。这种东西上好像有PHP examples out there

    【讨论】:

    • 非常感谢,您提供的示例网站正是我所需要的。谢谢:)
    猜你喜欢
    • 2015-01-17
    • 1970-01-01
    • 1970-01-01
    • 2013-09-25
    • 2019-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-25
    相关资源
    最近更新 更多