2011-08-22 129 views
0

有没有人可以帮我一点吗? 我有一个C#中的小方法,我想转换为PHP。 不幸的是,我对PHP的知识非常有限。 我希望有人能给我一些如何做到这一点的线索。 只要说出来,我不会找人帮我做,只是帮助我开始。将C#函数转换为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的equivialent。有没有equivialent?还是甚至需要? 然后这部分:

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

我该如何复制这在PHP中?

希望有人能帮我解释一下。 此致敬礼, /里克

+0

第11行,什么是'p1'? – nickf

+0

[可能的重复](http://stackoverflow.com/questions/124067/php-string-concatenation-performance) –

+0

@Rickard,如果你注释了你的代码中发生了什么,它可能会有所帮助。我自己并不熟悉C#,所以我无法帮助你,因为我不知道'ch^ch2'的作用。 – nickf

回答

0

乍一看,这似乎是一个XOR cipher。提供的一个字符串是关键字,而另一个字符串是之前由该关键字进行过XOR的字符串。再次用关键结果异或以获得原始字符串。我会尝试重新实现代码,而不是一字一句地复制它,因为它不是特别好写(除非我误解了C#代码的意图,这可以用更可读的3或4来重写线,而不使用goto等)。似乎有这种类型的东西PHP examples out there

+0

非常感谢你,你提供的示例网站是我需要的东西。谢谢:) – Rickard

+0

很高兴我可以帮助! –

0

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

+1

对于一个函数似乎有点矫枉过正 – nickf

0

真的没有必要在PHP一个StringBuilder。只是追加字符串这样的:

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

这是从PHP手册用绳子内

性状可以通过指定被访问和修改关于访问字符在字符串中基于零的偏移在使用方形数组括号的字符串之后的所需字符,如$ str [42]中所示。出于此目的,可以将字符串视为一组字符。

因此,你可以简单地做这

$ch = $builder[$num]; 

最后,你可能想看看这篇文章了concidering异或的东西(CH1^CH2): http://www.go4expert.com/forums/showthread.php?t=5555

正如你所看到的,语法就像在C#中一样,除了演员之外。不过,我不能保证它是否会产生完全相同的输出。