首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Base128编码规范

Base128编码规范

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

Base64与Base128

其实Base128和Base64没什么联系,只是沿用了这种命名规范而已。Base64是通过选取256个ASCII字符中的64个可打印字符,将任意的二进制字节流转换成字符串。根据信息论一一映射原理,任意的Base64“无字符意义的”的字符流,每个字节的最高2位都是0,相当于:

00xxxxxx 00xxxxxx 00xxxxxx......

这样的话,每个字节就有2bit浪费掉了,总浪费量是1/4,也就是说Base64要求把每三个8Bit的字节转换为四个6Bit的字节(3*8 = 4*6 = 24),然后把6Bit再添两位高位0,组成四个8Bit的字节,也就是说,转换后的字符串理论上将要比原来的长1/3。

但是Base128编码是另外一种编码,也叫variable-length quantity(VLQ),即一种变长编码。我准备用3期来详细谈谈Base128以及基于它的Zipack格式。

以下内容来自Zipack格式的README:

https://github.com/zipack/spec/blob/master/README-zh.md

Zipack

官网:https://zipack.gitee.io/

规范(英文):spec.md

这个仓库保存Zipack的规范,并且和Github仓库同步更新。Zipack是一套高效的二进制序列化格式,比JSON更小更快,支持更多的数据类型。在字符串和小数的编码上,Zipack采用原创的算法来取代臃肿的UTF-8和IEEE浮点数。

文件后缀名:.zipack

mime类型:application/zipack

优点

  1. 体积更小:可以将JSON压缩至70%左右。
  2. 速度更快:基于前缀的二进制格式无须编译,比文本格式更快。
  3. 类型丰富:支持Number,String,Bool,Null,ByteArray,List,Map(字典)以及保留类型。
  4. 变长编码:根据Huffman编码,常用的类型更短,如小整数只占1个字节。参考tree.km
  5. 原创算法:在处理字符串和浮点数上,Zipack采用压缩率更高的编码来取代标准的UTF8和IEEE浮点数,具体原理请参考spec.md。
  6. 自由扩展:Zipack提供保留前缀,开发者可借此添加新的类型。
  7. 流化传输:处理大数据的时候,Zipack可以无缝拼接,边传输边处理。

应用场景

你可以直接用Zipack取代JSON,同时ByteArray类型让你可以插入二进制文件而无须使用臃肿的Base64编码。由于Zipack是无格式的,你也可以选择利用保留类型来预交换格式。常见的使用场景包括内存缓存、RPC通信协议、配置文件等。

动机

当今最流行的序列化格式无疑是JSON,但是基于文本的JSON有许多缺点,比如解析速度慢,体积较大。而只有基于前缀的二进制格式能克服这些问题。所以我设计了一个紧凑的、无协议的二进制序列化格式Zipack用来取代JSON,为数据的存储和传输提供更好的方案。

生态系统:I need you

Zipack只是一个格式,想要投入使用,我们需要开发相应的软件。目前作者已经开发出JavaScript版本的编解码器:zipack.js。但是我需要你的帮助来共同建设Zipack的生态,请参考spec.md开发其他编程语言的zipack工具。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Base64与Base128
  • Zipack
    • 优点
      • 应用场景
        • 动机
          • 生态系统:I need you
          相关产品与服务
          文件存储
          文件存储(Cloud File Storage,CFS)为您提供安全可靠、可扩展的共享文件存储服务。文件存储可与腾讯云服务器、容器服务、批量计算等服务搭配使用,为多个计算节点提供容量和性能可弹性扩展的高性能共享存储。腾讯云文件存储的管理界面简单、易使用,可实现对现有应用的无缝集成;按实际用量付费,为您节约成本,简化 IT 运维工作。
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档