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工具。

关于作者

坐标:江浙沪一带

Github:https://github.com/jinhengyu

Gitee:https://gitee.com/jinhengyu

博客:https://jimmy.blog.csdn.net/


http://www.taodudu.cc/news/show-3167139.html

相关文章:

  • 46、W25Q128 存储器工作原理
  • -128的补码
  • c语言中-128补码,-128 的 原码,反码,补码
  • 【STC32G12K128开发板】——STC32G12K128开发板介绍
  • 惠普m128fn中文说明书_惠普M128fp使用手册
  • #芯片# SM25QH128M
  • AES128加解密流程详细介绍
  • Java Integer128陷阱详解
  • STM32 Cube IDE HAL库驱动 W25Q128 进行读、写、擦除操作
  • W25Q128读写实验
  • 如何看懂Code128条形码
  • Integer128==128?false
  • -128的二进制怎么表示
  • 128陷阱理解(Java中的128陷阱)
  • XMR下的单CPU算力图,可用作当前2021年CPU算力的参考排名
  • 关于用d3.js画力导向图(Force-directed Graph)—如何让图收放自如
  • 注意力图Attention map可视化【亲测完美】
  • 【笔记】高斯金字塔和拉普拉斯金字塔:高斯金字塔持续的下采样让图片变小,像素变少,特征模糊;拉普拉斯金字塔以记录恢复原图过程中的上采样后图片与原始图片的损失,力图还原真实图片
  • cesium 加载热力图
  • 弱监督目标定位 | TS-CAM:用于弱监督目标定位的token语义耦合注意力图
  • 注意力的可视化
  • 约局模式棋牌游戏开发成2019风向标 力图精细化可持续发展
  • 在html中添加力导向图,echart力导向图的绘制
  • 高通平台camera客观项测试之解析力均匀性
  • 图深度学习入门教程(六)——注意力机制与图注意力
  • 类与对象——Java程序设计基础
  • 模型可解释性-shap value
  • SHAP应用举例
  • 力图搜集各种跟CV,AR相关的代码
  • 专家谈房产两难:力图房价回归理性 担心地产崩溃

Base128编码规范相关推荐

  1. JavaScript最全编码规范

    转载: JavaScript最全编码规范 类型 ●基本类型:访问基本类型时,应该直接操作类型值 ●string ●number ●boolean ●null ●undefined var foo = ...

  2. 【C++】Google C++编码规范(三):智能指针

    [C++]Google C++编码规范(一):作用域 [C++]Google C++编码规范(二):类 std::unique_ptr std::unique_ptr是C++11标准里新推出的智能指针 ...

  3. 《阿里巴巴编码规范(JAVA)》学习认证考后感

    image.png <阿里巴巴 Java 开发手册>是阿里巴巴集团技术团队的集体智慧结晶和经验总结,经历了多次大规模一线实战的检验及不断完善,系统化地整理成册,回馈给广大开发者. 本手册的 ...

  4. google python代码规范_如何用好python编码规范,写一手漂亮的代码

    前一段时间在编写python 代码的时候编辑器中一直在提示规范问题,因为强迫症的原因,我决定遵循python 的编码规范去编码,然后把需要注意的点记录下来, 帮助自己和大家一起成长. 这是我的main ...

  5. Python最简编码规范

    0.前言 本文是阅读<Python Coding Rule>之后总结的最为精华及简单的编码规范,根据每个人不同喜好有些地方会有不同的选择,我只是做了对自己来说最简单易行的选择,仅供大家参考 ...

  6. 华为java安全编码规范_Java安全编码之SQL注入

    随着互联网的发展,Java语言在金融服务业.电子商务.大数据技术等方面的应用极其广泛.Java安全编码规范早已成为SDL中不可或缺的一部分.本文以Java项目广泛采用的两个框架Hibernate和My ...

  7. 分享GitHub上一位老外的嵌入式C编码规范(收藏细读)

    简 介: 本文分析在头条上分享GitHub上一位老外的嵌入式C编码规范(收藏细读):嵌入式大杂烩. 关键词: 嵌入式,C语句,编程规范 分享GitHub上一位老外的嵌入式C编码规范(收藏细读) §01 ...

  8. PHP标记风格,编码规范

    PHP标记风格 PHP一共支持4种标记风格 <?php echo "这是XML风格的标记"; ?> 脚本风格 <script language="php ...

  9. Go 语言编程 — 编码规范指南

    目录 文章目录 目录 参考 工程化要求 编码规范 大小约定 缩进.括号和空格约定 命名规范 包.目录命名规范 文件命名规范 标识符命名规范 变量.常量名 函数.方法名 结构体.接口名 空行.注释.文档 ...

最新文章

  1. UNICODE 码和字符的相互转换
  2. CSS3实践之路(六):CSS3的过渡效果(transition)与动画(animation)
  3. 如何把两个域控同步_同步带噪音大,怎么办?
  4. Linux下修改Swap分区大小
  5. 做网站用UTF-8还是GB2312?
  6. 创业冲突的五种解决方法是_失眠原因不同,中医五种调理方法解决问题!
  7. python生成随机整数_Python中,我想得到1~255随机整数,用rand.randint(1,255),但不想让里面170这个数出现,怎么写呢?...
  8. jquery 获取同级元素_如何在jQuery中获取元素的同级
  9. JSP之【include】指令
  10. Spring+SpringMVC+MyBatis+easyUI整合基础篇(五)讲一下maven
  11. Fiddler 4 模拟 服务端返回 json
  12. nb物联网 bc95模块联网 bc95使用
  13. 广东女子职业技术学院计算机应用技术,广东女子学院虚拟校园系统的构建与技术实现...
  14. 2018年11月黑马java
  15. java 获取视频第一帧 | Java工具类
  16. 论文阅读:SCENE TRANSFORMER: A UNIFIED ARCHITECTUREFOR PREDICTING MULTIPLE AGENT TRAJECTORIES
  17. 从会种田到“慧种田”,传感技术成“刚需”!
  18. 二叉树任意两节点之间的最短距离
  19. 让英文和数字随机生成java_Java生成随机字母和数字
  20. 远距离WiFi模块,无人机传输技术,无线通信视频传输技术

热门文章

  1. 软硬一体的流媒体边缘计算设备在视频“云、边、端”解决方案中的重要作用
  2. jquery在线引用
  3. wordpress-主题商业中国总裁商业思维 培训商学院官网源码整站下载 培训商学院,教育培训官网 培训商学院整站资源
  4. k8s RoCE 部署: k8s-rdma-shared-dev-plugin + macvlan cni
  5. 点击按钮,刷新验证码
  6. 求图中的最大独立集或最大团(UVA 193)
  7. 逻辑函数的代数化简法
  8. vs2010打包发布注意事项
  9. 【数字逻辑】——逻辑函数及其简化(学习笔记)
  10. 侯捷老师 c++面向对象编程(上)