Пример #1
0
        /// <Розпакування>
        /// Виконання розпакування за допомогою алгоритму 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);
        }