Exemple #1
0
        public void BitRoundtripTest()
        {
            byte[] bitarray = new byte[] {
                1, 1, 1, 1, 1, 1, 1, 1,
                1, 0, 1, 0, 1, 0, 1, 0,
                0, 1, 0, 1, 0, 1, 0, 1,
                0, 0, 0, 0, 0, 0, 0, 0,
                1, 1, 1, 1, 0, 0, 0, 0,
                0, 0, 0, 0, 1, 1, 1, 1,
            };
            byte[] testByteArray = BitUtility.BitArrayToByteArray(bitarray, false);
            Console.WriteLine($"test in 1: {BitUtility.BytesToBitString(testByteArray)}");
            Console.WriteLine($"test in 1: {BitUtility.BytesToHex(testByteArray)}");
            foreach (byte b in bitarray)
            {
                Console.Write(b);
            }
            Console.WriteLine();

            byte[] testBitArray = BitUtility.ByteArrayToBitArray(testByteArray, false);
            testByteArray = BitUtility.BitArrayToByteArray(testBitArray);
            Console.WriteLine($"test in 2: {BitUtility.BytesToBitString(testByteArray)}");
            Console.WriteLine($"test in 2: {BitUtility.BytesToHex(testByteArray)}");

            foreach (byte b in testBitArray)
            {
                Console.Write(b);
            }
            Console.WriteLine();
        }
        public byte[] SetSubfragmentConfiguration(byte[] variantCodingValue, VCSubfragment subfragment)
        {
            byte[]      variantBits = BitUtility.ByteArrayToBitArray(variantCodingValue);
            List <byte> result      = new List <byte>(variantBits.Take(ByteBitPos));

            variantBits = variantBits.Skip(BitLength + ByteBitPos).ToArray();
            byte[] sfToSet = BitUtility.ByteArrayToBitArray(subfragment.Dump).Take(BitLength).ToArray();
            result.AddRange(sfToSet);
            result.AddRange(variantBits);
            return(BitUtility.BitArrayToByteArray(result.ToArray()));
        }
        public VCSubfragment GetSubfragmentConfiguration(byte[] variantCodingValue)
        {
            byte[] variantBits  = BitUtility.ByteArrayToBitArray(variantCodingValue);
            byte[] affectedBits = variantBits.Skip(ByteBitPos).Take(BitLength).ToArray();

            foreach (VCSubfragment subfragment in Subfragments)
            {
                byte[] sfToCompare = BitUtility.ByteArrayToBitArray(subfragment.Dump).Take(BitLength).ToArray();
                if (sfToCompare.SequenceEqual(affectedBits))
                {
                    return(subfragment);
                }
            }
            return(null);
        }