/// <Розпакування> /// Виконання розпакування за допомогою алгоритму RLE (Кодування повторів). /// </Розпакування> /// <param name="source">Масив даних</param> public static void Decompress(ref byte[] source) { #region Зчитування і видалення індексу оригінального рядку int size = source.Length; List<byte> tmpSource = new List<byte>(source); int offset = (int)BitConverter.ToUInt16(tmpSource.ToArray(), (size - 2)); tmpSource.RemoveAt(size - 2); tmpSource.RemoveAt(size - 2); source = tmpSource.ToArray(); #endregion tmpSource.Clear(); size -= 2; /* for (int i = 0; i < size / 2; i++) { int j = 0; do { tmpSource.Add(source[i]); j++; } while (j < (source[i + size / 2])); } source = tmpSource.ToArray(); */ RLE rleDecode = new RLE(); source = rleDecode.DecodeData(source); Decoder(ref source, offset); }