⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 huffmancodes.cs

📁 PDF文件格式解析库源代码
💻 CS
字号:
using System;
using System.Collections.Generic;
using System.Text;

namespace QiHe.CodeLib.Compress.DeflateFormat
{
    public partial class HuffmanCodes
    {
        HuffmanTree AlphabetHuffmanCode;
        HuffmanTree DistanceHuffmanCode;

        public HuffmanCodes(int[] alphabetCodeLengths, int[] distanceCodeLengths)
        {
            AlphabetHuffmanCode = HuffmanTree.FromCodeLengths(alphabetCodeLengths);
            DistanceHuffmanCode = HuffmanTree.FromCodeLengths(distanceCodeLengths);
        }

        public static readonly HuffmanCodes Default = CreateDefaultCodes();

        private static HuffmanCodes CreateDefaultCodes()
        {
            int[] alphabetCodeLengths = new int[288];
            for (int n = 0; n < 144; n++)
            {
                alphabetCodeLengths[n] = 8;
            }
            for (int n = 144; n < 256; n++)
            {
                alphabetCodeLengths[n] = 9;
            }
            for (int n = 256; n < 280; n++)
            {
                alphabetCodeLengths[n] = 7;
            }
            for (int n = 280; n < 288; n++)
            {
                alphabetCodeLengths[n] = 8;
            }

            int[] distanceCodeLengths = new int[32];
            for (int n = 0; n < 32; n++)
            {
                distanceCodeLengths[n] = 5;
            }

            return new HuffmanCodes(alphabetCodeLengths, distanceCodeLengths);
        }
        
        static readonly int[] CodeLengthOrder = { 16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15 };
    }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -