private void EncodeBlock(int blockContentLength, int targetDenominator)
        {
            Output.WriteLong(blockContentLength, 23);

            FrequencyDictionary <int> frequencies = new FrequencyDictionary <int>();

            for (int i = 0; i < blockContentLength; i++)
            {
                frequencies.AddData(Block[i]);
            }
            AnsCodingTable blockTable = new AnsCodingTable(frequencies, targetDenominator);

            blockTable.WriteTable(Output);
            WriteEncoding(blockContentLength, blockTable);
        }
        public void EncodeBlock(int[] blockIn, int count, int targetDenominator, byte[] encryptionKey = null)
        {
            Output.WriteLong(count, 23);
            Block = blockIn;
            FrequencyDictionary <int> frequencies = new FrequencyDictionary <int>();
            int offsetCount = count;

            for (int i = 0; i < offsetCount; i++)
            {
                frequencies.AddData(Block[i]);
            }
            AnsCodingTable blockTable = new AnsCodingTable(frequencies, targetDenominator, encryptionKey);

            blockTable.WriteTable(Output);
            WriteEncoding(count, blockTable);
        }