0

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 関数のしくみを説明できれば幸いです。

4

2 に答える 2

0

Array.Copy は、ある配列から別の配列にデータをコピーします。

  • incPKGFileKey はソース配列です
  • 0 は、コピーを開始するソース配列内のオフセットです。
  • PKGFileKeyConsec は宛先配列です
  • pos はコピー先配列の開始位置のオフセットです。
  • PKGFileKey.Length は、コピーする配列項目の数です

私の知る限り、IncrementArray は .NET フレームワークの一部ではなく、プロジェクトのどこかで定義する必要があります。

于 2013-02-13T22:31:35.007 に答える
0

Array.Copy他の .NET 型またはメソッドと同様に、MSDN ライブラリで説明されています: http://msdn.microsoft.com/en-us/library/y5s0whfd.aspx

IncrementArrayは明らかにコード内 (同じクラスまたはこのクラスの基本クラス内) にあるため、そのコードを読む必要があります。

于 2013-02-13T22:32:27.000 に答える