private static Tuple <char, char> ToHexSymbol(byte value)
        {
            char digit1 = ConversionTool.ToHexSymbol((byte)(value & 0xF));
            char digit2 = ConversionTool.ToHexSymbol((byte)((value >> 4) & 0xF));

            return(new Tuple <char, char>(digit1, digit2));
        }
        public static string ToHexString(this IReadOnlyList <Bit> @this)
        {
            char[] chars = new char[@this.Count / 4 + 2];

            ByteWriter bw = new ByteWriter();

            for (int n = 0; n < @this.Count;)
            {
                for (int j = 0; j < 4; j++)
                {
                    bw.AddBit(@this[n++]);
                }
                chars[chars.Length - n / 4] = ConversionTool.ToHexSymbol(bw.Value);
                bw.Reset();
            }
            chars[0] = '0';
            chars[1] = 'x';
            return(new string(chars));
        }