Пример #1
0
        public static void Encode(ICollection <char> output, int value)
        {
            int vlq = ToVlqSigned(value);

            do
            {
                int maskResult = vlq & Base64VlqConstants.VlqBaseMask;
                vlq = vlq >> Base64VlqConstants.VlqBaseShift;
                if (vlq > 0)
                {
                    maskResult |= Base64VlqConstants.VlqContinuationBit;
                }
                output.Add(Base64Converter.ToBase64(maskResult));
            } while (vlq > 0);
        }
Пример #2
0
        /// <summary>
        /// Reads characters from the Base64CharProvider until a complete integer value has been extracted.
        /// </summary>
        private static int DecodeNextInteger(Base64CharProvider charProvider)
        {
            int  result = 0;
            bool continuation;
            int  shift = 0;

            do
            {
                char c     = charProvider.GetNextCharacter();
                int  digit = Base64Converter.FromBase64(c);
                continuation = (digit & Base64VlqConstants.VlqContinuationBit) != 0;
                digit       &= Base64VlqConstants.VlqBaseMask;
                result       = result + (digit << shift);
                shift        = shift + Base64VlqConstants.VlqBaseShift;
            } while (continuation);

            return(FromVlqSigned(result));
        }