前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高级前缀码的Huffman设计理念

高级前缀码的Huffman设计理念

作者头像
Jean
发布2021-01-04 11:36:53
5060
发布2021-01-04 11:36:53
举报
文章被收录于专栏:Web行业观察Web行业观察

本期记录一下Zipack的类型树和前缀表。从类型树上看,Zipack一共有21种数据类型,包括15种已分配类型和6种保留类型,15种已分配类型中又有11种基本类型和4种复合类型,11种基本类型中有5个是实数类型。大家可以按这种分类方法把所有类型一一对应上去,理解一遍。

基于Huffman编码的类型树

代码语言:javascript
复制
Zipack
├─── 0:小自然数
╰─── 1
     ├─── 10
     │    ├─── 100:小字符串
     │    ╰─── 101:小列表
     ╰─── 11
          ├─── 110:小字典
          ╰─── 111
               ├─── 1110:(小)保留
               ╰─── 1111
                    ├─── 1111,0
                    │    ├─── 1111,00
                    │    │    ├─── 1111,000
                    │    │    │    ├─── 1111,0000:True
                    │    │    │    ╰─── 1111,0001:False
                    │    │    ╰─── 1111,001
                    │    │         ├─── 1111,0010:正小数
                    │    │         ╰─── 1111,0011:负小数
                    │    ╰─── 1111,01
                    │         ├─── 1111,010
                    │         │    ├─── 1111,0100:VLQ字节流
                    │         │    ╰─── 1111,0101:VLQ字符串
                    │         ╰─── 1111,011
                    │              ├─── 1111,0110:VLQ列表
                    │              ╰─── 1111,0111:VLQ字典
                    ╰─── 1111,1
                         ├─── 1111,10
                         │    ├─── 1111,100
                         │    │    ├─── 1111,1000:VLQ正整数
                         │    │    ╰─── 1111,1001:VLQ负整数
                         │    ╰─── 1111,101
                         │         ├─── 1111,1010:Null
                         │         ╰─── 1111,1011:保留
                         ╰─── 1111,11
                              ├─── 1111,110
                              │    ├─── 1111,1100:保留
                              │    ╰─── 1111,1101:保留
                              ╰─── 1111,111
                                   ├─── 1111,1110:保留
                                   ╰─── 1111,1111:保留

图中的树形结构使用了制表符

前缀表明细

类型前缀

长度段

长度含义

负载

迷你自然数

0

\

7bit

VLQ正整数

1111 1000

\

vlq自然数+128

VLQ负整数

1111 1001

\

-1-vlq自然数

正小数

1111 0010

\

(精度反转算法)

负小数

1111 0011

\

(精度反转算法)

短字符串

100

5bit

字符的数量

zipack字符串

VLQ字符串

1111 0101

vlq自然数+32

字符的数量

zipack字符串

字典中的“键”

vlq自然数

字符的数量

zipack字符串

纯字节流

1111 0100

VLQ自然数

字节数量

字节流

Boolean

1111 0000、1111,0001

\

null/nil

1111 1010

\

短列表

101

5bit

列表元素的数量

子元素无缝拼接

VLQ列表

1111 0110

VLQ自然数+32

列表元素的数量

子元素无缝拼接

迷你字典

110

5bit

键值对的数量

键值无缝拼接

字典

1111 0111

vlq自然数+32

键值对的数量

键值无缝拼接

保留类型

FB、FC、FD、FE、FF

\

\

\

保留类型(带长度)

1110 0000 ~ 1110 1111

4bit

某种保留对象的数量

\

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2020-12-22,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 WebHub 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档