【问题标题】:C# equivalent of this Ruby code?这个 Ruby 代码的 C# 等价物?
【发布时间】:2013-11-28 00:57:50
【问题描述】:

我不知道 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();
        }

附:我也是 C# 的新手。

任何帮助都将不胜感激 谢谢

【问题讨论】:

  • 你应该知道我们不做代码请求。到目前为止你做了什么?
  • 试着把它看成是英文的……最大的不同是库函数,它们的名字很好

标签: c# ruby


【解决方案1】:

我认为你基本上是对的,除了 ruby​​

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

【讨论】:

  • 谢谢回复,我还没开始工作,Final_key 应该声明为字符串吧?当我们在循环中使用Convert.ToChar 将while 事物转换为char 时?
猜你喜欢
  • 2019-02-12
  • 1970-01-01
  • 2014-04-26
  • 2021-06-15
  • 2017-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多