C#。 BitArray。如何将位移到左侧或右侧?

时间:2015-11-19 05:56:44

标签: c# bit-shift bitarray

尝试实现Present cipher。我有功能:

static byte[] getRoundKey(byte[] K)
{
    return null;
}

功能必须像这样工作:

enter image description here

我认为,如果我使用var bits = new BitArray(K),那么我就无法将其转移到左侧或右侧。我怎样才能以真正的方式进行比特移动"字节数组还是位数组?

P.S。

我以这种方式解决了我的问题:

static BitArray cyclic_shift(BitArray bits, short shift)
        {
            /*
            Сдвигает битовый массив на указанное смещение вправо (если смещение положительное) или влево (если смещение отрицательное)
            */
            BitArray result = new BitArray(bits.Length);
            for (byte i = 0; i < bits.Length; i++)
            {
                result[i] = bits[(bits.Length - (shift - i)) % bits.Length];
            }
            return result;
        }

如果您知道更好的方法,请在评论中发表回答。感谢。

0 个答案:

没有答案
相关问题