目的
了解什么是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