Exemple #1
0
        public static byte[] ToArray(this BitArray arr)
        {
            SecurityAssert.NotNull(arr);
            var dataLength = (int)Math.Ceiling(arr.Length / 8m);

            return(arr.GetBytes(0, dataLength));
        }
        public static void Xor(byte[] input, int inputOffset, byte[] target, int targetOffset, int length)
        {
            SecurityAssert.AssertBuffer(input, inputOffset, length);
            SecurityAssert.AssertBuffer(target, targetOffset, length);

            for (var i = 0; i < length; i++)
            {
                target[targetOffset + i] ^= input[inputOffset + i];
            }
        }
        public static byte[] FromHex(string s)
        {
            SecurityAssert.Assert(s.Length % 2 == 0);

            var buffer = new byte[s.Length / 2];

            for (var i = 0; i < buffer.Length; i++)
            {
                buffer[i] = (byte)(FromHex(s[2 * i]) << 4 | FromHex(s[2 * i + 1]));
            }

            return(buffer);
        }
Exemple #4
0
        public static byte GetByte(this BitArray arr, int offset)
        {
            SecurityAssert.NotNull(arr);

            var endPoint = Math.Min(arr.Length, offset + 8);

            byte value = 0;
            var  shift = 0;

            for (var i = offset; i < endPoint; i++)
            {
                value |= (byte)((arr[i] ? 1 : 0) << shift++);
            }

            return(value);
        }
Exemple #5
0
        public static byte[] GetBytes(this BitArray arr, int bitOffset, int byteLength)
        {
            SecurityAssert.NotNull(arr);
            SecurityAssert.Assert(bitOffset < arr.Length);
            SecurityAssert.Assert(bitOffset + byteLength * 8 < arr.Length + 7);


            var buffer = new byte[byteLength];

            for (var i = 0; i < byteLength; i++)
            {
                buffer[i] = arr.GetByte(bitOffset + i * 8);
            }

            return(buffer);
        }