2011-08-22 72 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#中一樣,除了演員之外。不過,我不能保證它是否會產生完全相同的輸出。