/// <summary>Encodes the specified data.</summary> /// <param name="data">The data to encode.</param> public override string Encode(byte[] data) { if (data == null) { throw new ArgumentNullException(nameof(data)); } var result = new List <char>(data.Length * 2); var value = 0; var bits = 0; foreach (var b in data) { value = (value << 8) | b; bits += 8; while (bits >= bitCount) { bits -= bitCount; var outValue = value >> bits; value &= ~(0xFFFF << bits); result.Add(CharacterDictionary.GetCharacter(outValue)); } } if (bits > bitCount) { bits -= bitCount; var outValue = value >> bits; value &= ~(0xFFFF << bits); result.Add(CharacterDictionary.GetCharacter(outValue)); } if (bits > 0) { var shift = bitCount - bits; var outValue = value << shift; result.Add(CharacterDictionary.GetCharacter(outValue)); bits -= bitCount; } if (Padding != null) { var padding = (char)Padding; while ((bits % 8) != 0) { result.Add(padding); bits -= bitCount; } } return(new string(result.ToArray())); }
/// <summary> /// Encodes the specified data /// </summary> /// <param name="data">The data to encode</param> public override string Encode(byte[] data) { List <char> result = new List <char>(data.Length * 2); int value = 0; int bits = 0; foreach (byte b in data) { value = (value << 8) | b; bits += 8; while (bits >= BitCount) { bits -= BitCount; int outValue = value >> bits; value = value & ~(0xFFFF << bits); result.Add(CharacterDictionary.GetCharacter(outValue)); } } if (bits >= BitCount) { bits -= BitCount; int outValue = value >> bits; value = value & ~(0xFFFF << bits); result.Add(CharacterDictionary.GetCharacter(outValue)); } if (bits > 0) { int shift = BitCount - bits; int outValue = value << shift; result.Add(CharacterDictionary.GetCharacter(outValue)); bits -= BitCount; } if (m_Padding != null) { char padding = (char)m_Padding; while (bits % 8 != 0) { result.Add(padding); bits -= BitCount; } } return(new string(result.ToArray())); }