vlq编码


目的

了解什么是vlq

概念

vlq是指Variable-length Quantity,是一种可变长度的编码。

它借用base64编码格式来表示。

base64

base64是利用64个可打印字符来表示二进制数字。

详解

  • 将数字用二进制表示,得到一连串的0和1
  • 从右往左数,分别隔成4bit,5bit,5bit,…,最左边的如果不足5个bit则用0补齐
  • 对于第一个4bit,如果当前数字是正数,则在后面补一个0,如果是负数则补一个1,得到一个5bit
  • 对于所有的5bit串,依次将右边的放到最左边,也就是按5bit为单位,逆序,得到一个新的5bit组
  • 对于新的5bit组,最右边的一个5bit在前面加一个0表示后面没有连续的bit了,剩余所有的5bit在前面加一个1表示后面的bit是一个整体,得到一个6bit组
  • 用base64对6bit组进行解析,得到一个base64字符串

示例见下图:

数字7用vlq编码后的base64编码是:O

数字1200用vlq编码后的base64编码是:grC

数字-17用vlq编码后的base64编码是:jB

用途

现在js打包工具source map就是用的vlq编码。

github实现了vlq算法:vlq

参考

[1]source map原理分析&vlq

[2]百度百科 base64

[3]github vlq


文章作者: Alex
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Alex !
  目录