在线数据压缩模拟器
查看文本的 Huffman 编码与符号码表,比较 UTF-8 原始位数和载荷位数并复制结果。教学演示,不生成压缩档案。
开始使用
结果的含义
模拟器按 Unicode 码点统计频率,反复合并频率最小的两个节点来构建二叉 Huffman 树。只有一种符号时,其编码固定为 0。本实现对完全相同的输入给出相同编码;频率相同的节点若采用另一种排序规则,可以得到不同的有效码表,因此比较时应看加权载荷长度。
可复核示例
ABBC 得到 B=0、A=10、C=11:2×1 + 1×2 + 1×2 = 6 位载荷,原始 UTF-8 为 32 位。AAAA 为原始 32 位、载荷 4 位;你好为 48 位和 2 位;实际输入两个表情 😀😀 为 64 位和 2 位。
输入与显示
上限是 100000 个 JavaScript UTF-16 代码单元,不是 UTF-8 字节数或可见字符数。许多表情占两个代码单元,一个可见表情序列也可能包含多个码点。空文本会被拒绝,但仅含空白的文本仍是有效数据。JSON 会把换行显示为 \n、制表符显示为 \t,普通空格则显示为带引号的空格 " ";这只是展示方式,不会改变输入符号。
教学边界
原始位数为 UTF-8 字节长度乘以 8;载荷位数为各符号的频率与编码长度乘积之和。载荷不包含码表、树、文件头、填充和容器开销,因此不是压缩文件大小,也不保证实际节省空间。本工具不生成档案、压缩二进制下载或解压器,也不是加密工具。计算在浏览器中完成,大量不同符号可能生成很长的结果表。
此工具无需安装,所有处理均在当前浏览器本地完成,不会上传输入内容或本地文件。