Ejemplo n.º 1
0
        /// <summary>
        /// Zwraca tablicę obiektów ByteArray będących efektem podzielenie bieżącej tablicy na równe części.
        /// Jeśli ostatnia część jest mniejsza od wskazanej długości, można wskazać czy ma ona być dopełniana
        /// do tej wielkości, a jesli tak to jaką wartość mają przyjąć dodane bajty.
        /// </summary>
        /// <param name="splitLength">Określa jak długie mają być wynikowe części.</param>
        /// <param name="padding">Czy dopełniać ostatnią część do długości podziału.</param>
        /// <param name="paddingByte">Wskazuje jaką wartość mają mieć bajty dodane w ostatniej części.</param>
        /// <returns>Wynik podziału bieżącej tablicy na części o podanej długości.</returns>
        public ByteArray[] Slice(int splitLength, bool padding, byte paddingByte)
        {
            int slices = Length / splitLength;

            if (Length % splitLength != 0)
            {
                slices++;
            }

            ByteArray[] result = new ByteArray[slices];
            for (int i = 0; i < slices; i++)
            {
                ByteArray slice = Extract(i * splitLength, splitLength);
                if (slice.Length < splitLength && padding)
                {
                    slice.SetLength(splitLength, paddingByte);
                }
                result[i] = slice;
            }
            return(result);
        }