你们中有谁能帮助我吗? 我在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中复制它?
希望有人能帮助我对此有所了解。 最好的祝福, /瑞克
答案 0 :(得分:0)
jsc项目可以为您将.net / C#转换为PHP。
这听起来不错,但接受的答案是:
我知道你希望有经验的人,但如果没有人 挺身而出......
您可以考虑将代码复制并粘贴到PHP脚本中 并检查什么打破。编写一个解析器来修复它,运行它 整个脚本,看看接下来发生了什么。继续 直到脚本按预期运行。
如果您没有使用任何更复杂的.Net类,我不能 想象你会遇到太多麻烦。
答案 1 :(得分:0)
在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#中一样,除了演员表。但是我无法保证它是否会产生完全相同的输出。
答案 2 :(得分:0)
乍一看,这似乎是XOR cipher。提供的一个字符串是键,另一个字符串之前已经被键进行了异或。再次对它进行异或,然后将关键结果返回原始字符串。
我会尝试重新实现代码而不是逐字复制它,因为它编写得不是很好(除非我误解了C#代码的意图,这可以用更易读的3或4行重写,不使用goto等)。这类事情似乎有PHP examples out there。