变长字节的数字表示法vb224

开始

数字有大有小,用多少字节表示呢?
本文描述的方案,采用变化的长度。vb是varying bytes的意思,224是表示它特征的一个数。

第一版:

每个字节8比特,最高的1比特用来表示“是否连续”,0表示终止,1表示继续,如:
单字节模式:0×××××××
双字节模式:1××××××× 0×××××××
三字节模式:1××××××× 1××××××× 0×××××××
一直延续下去,理论上说可以表示无穷大。
这一版叫做vb128。

第二版:

为表示0到255做了优化。
单字节模式:0至223
双字节模式:224至255,0×××××××
三字节模式:224至255,1××××××× 0×××××××
也能表示无穷大。
首字节中,224至255是32个数,即5比特。
后边的字节,每个字节表示7比特。

比较:

题目:表示0到255,以及保留继续变大的可能。
解一:表示0到255需要256个字节,要想保留继续变大的可能,需要用双字节、四字节、八字节等。占用空间较大。
解二:采用vb128。前128个数字用1字节,后128个数字用2字节,总共128+2×128=384字节。
解三:采用vb224。前224个数字用1字节,后32个数字用2字节,总共224+2×32=288字节。
比较结果:
解一很占空间,且不能表示无穷大,退出比较。
解三比解二省下384-288=96字节。

总结:

当你需要表示一个数字,却又不能确定数字所占字节数的时候,可以考虑vb224编码。
截止2025年6月,该方案尚未实现,你可以自己动手实现,并应用于项目之中。

第三版

第一字节分为三种情况,[0…223]、1110××××、1111××××。
第一字节为[0…223]时,为第1模式。
第一字节为1110××××时,为第2模式。
第一字节为1111abcd时,为第3至第8模式。

第1模式:单字节模式,表示0到223,相当于7.8比特。
第2模式:无限模式。
1110×××× 0(7bit)
1110×××× 1(7bit) 0(7bit)
1110×××× 1(7bit) 1(7bit) 0(7bit)
……
首字节不变,后边以1字节为单位,用最高位0表示结束,用1表示继续。一串1开头的字节,后边跟着以0开头的字节为结束。
第3模式,加16比特数据。
第4模式,加16比特长度,和对应长度的数据。
第5模式,加32比特数据。
第6模式,加32比特长度,和对应长度的数据
第7模式,加64比特数据。
第8模式,加64比特长度,和对应长度的数据
剩余的10种模式,待定。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值