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); }
/// <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)); }