C#的IncrementArray和Array.Copy函数

时间:2013-02-13 22:27:46

标签: c# ruby

我正在尝试将使用C#制作的应用程序移植到Ruby,但我无法理解几个函数。

这是代码。

for (int pos = 0; pos < EncryptedData.Length; pos += AesKey.Length)
{
    Array.Copy(incPKGFileKey, 0, PKGFileKeyConsec, pos, PKGFileKey.Length);

    IncrementArray(ref incPKGFileKey, PKGFileKey.Length - 1);
}

private Boolean IncrementArray(ref byte[] sourceArray, int position)
{
    if (sourceArray[position] == 0xFF)
    {
        if (position != 0)
        {
            if (IncrementArray(ref sourceArray, position - 1))
            {
                sourceArray[position] = 0x00;
                return true;
            }
            else return false;
        }
        else return false;
    }
    else
    {
        sourceArray[position] += 0x01;
        return true;
    }
}

我知道数组和键的长度是16。 如果有人能解释Array.Copy和IncrementArray函数是如何工作的,我将不胜感激。

2 个答案:

答案 0 :(得分:0)

Array.Copy将数据从一个数组复制到另一个数组:

  • incPKGFileKey是源数组
  • 0是从
  • 开始复制的源数组中的偏移量
  • PKGFileKeyConsec是destionation数组
  • pos是目标数组开始复制到
  • 的偏移量
  • PKGFileKey.Length是要复制的数组项数
据我所知,

IncrementArray不是.NET框架的一部分,应该在项目的某个地方定义。

答案 1 :(得分:0)

与MSDN库中的任何其他.NET类型或方法一样,描述了

Array.Copyhttp://msdn.microsoft.com/en-us/library/y5s0whfd.aspx

IncrementArray显然在您的代码中(在同一个类或本类的基类中),因此您必须阅读该代码。