我不知道红宝石语言。我在Ruby中有以下代码。我希望它的c#等价。有人可以帮我吗?
def mysql_key(key)
final_key = "\0" * 16
key.length.times do |i|
final_key[i%16] ^= key[i]
end
final_key
end
修改 这是我到目前为止,但它不起作用
public static int Ord(string str){
byte[] asciiBytes = Encoding.ASCII.GetBytes(str);
return Convert.ToInt32(asciiBytes[0]);
}
public static string final_key(string key)
{
int d = 0;
int[] Final_key ={0x16} ;
foreach (char c in key)
{
Final_key[d % 16] = Convert.ToChar((Ord(Final_key[d % 16].ToString()) ^ Ord(Final_key[d].ToString())));
d++;
}
return Final_key.ToString();
}
P.S。我也是C#中的新手。
任何帮助都会非常值得注意 感谢
答案 0 :(得分:1)
我认为除了红宝石的
之外你基本上是对的final_key = "\0" * 16
相当于
int[] Final_key ={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0} ;
你应该考虑使用字节数组而不是所有这些来回ToChar(Ord(ToString...))
的东西