C#相当于这个Ruby代码?

时间:2013-11-27 04:19:58

标签: c# ruby

我不知道红宝石语言。我在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#中的新手。

任何帮助都会非常值得注意 感谢

1 个答案:

答案 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...))的东西