public async Task ArrayToTableString(byte[] output, int outputLenth = 0)
        {
            if (output.Length == 0)
            {
                throw new ArgumentException("File is empty");
            }

            if (OutputActionAsync.GetInvocationList() == null || OutputActionAsync.GetInvocationList().Length == 0)
            {
                isProgressAsync = false;
            }
            else
            {
                isProgressAsync = true;
            }

            var writingLenth = outputLenth != 0 ? outputLenth : output.Length;

            for (int i = 0; i < writingLenth; i++)
            {
                if (i % byteLineWidth == 0 && i != 0)
                {
                    if (isProgressAsync)
                    {
                        await OutputActionAsync?.Invoke("|\n");

                        await OutputActionAsync?.Invoke($"{RowLine}\n");
                    }
                    else
                    {
                        OutputAction?.Invoke("|\n");
                        OutputAction?.Invoke($"{RowLine}\n");
                    }
                }
                if (isProgressAsync)
                {
                    await OutputActionAsync?.Invoke(AlignCentre(output[i]));
                }
                else
                {
                    OutputAction?.Invoke(AlignCentre(output[i]));
                }

                WritingProgess = (double)(i + 1) / writingLenth;
            }

            Finalize?.Invoke();
        }
        public async Task ArrayToTableString(bool[] output, int outputLenth = 0)
        {
            if (output.Length == 0)
            {
                throw new ArgumentException("File is empty");
            }

            var writingLenth = outputLenth != 0 ? outputLenth : output.Length;

            for (int i = 0; i < writingLenth; i++)
            {
                if (i % binaryLineWidth == 0 && i != 0)
                {
                    if (isProgressAsync)
                    {
                        await OutputActionAsync?.Invoke("|\n");

                        await OutputActionAsync?.Invoke($"{RowLine}\n");
                    }
                    else
                    {
                        OutputAction?.Invoke("|\n");
                        OutputAction?.Invoke($"{RowLine}\n");
                    }
                }
                if (isProgressAsync)
                {
                    await OutputActionAsync?.Invoke($"| {Convert.ToInt16(output[i])} ");
                }
                else
                {
                    OutputAction?.Invoke($"| {Convert.ToInt16(output[i])} ");
                }

                WritingProgess = (double)(i + 1) / writingLenth;
            }

            Finalize?.Invoke();
        }