轨道
/
PHP
PHP
/
练习
/
可变长度数量
可变长度数量

可变长度数量

简单

说明

实现可变长度量(variable length quantity)的编码和解码。

本练习的目标是实现 VLQ 编码和解码。

简而言之,这种编码的目标是用一种能节省字节的方式来编码整数值。 每个字节中只有前 7 位是有效位(右对齐,有点像 ASCII 字节)。 所以,如果你有一个 32 位的值,就要把它拆解成一系列 7 位的字节。 当然,字节的数量取决于你的整数,是可变的。 为了标明哪个字节是序列中的最后一个,你要把第 7 位留为 0。 在它前面的所有字节中,都要把第 7 位设为 1。

所以,如果整数在 0-127 之间,就可以用一个字节表示。 虽然 VLQ 可以处理任意大小的数字,但在本练习中,我们只处理能放进 32 位无符号整数的数字。 下面是整数作为 32 位值的一些例子,以及它们对应的可变长度量:

 NUMBER        VARIABLE QUANTITY
00000000              00
00000040              40
0000007F              7F
00000080             81 00
00002000             C0 00
00003FFF             FF 7F
00004000           81 80 00
00100000           C0 80 00
001FFFFF           FF FF 7F
00200000          81 80 80 00
08000000          C0 80 80 00
0FFFFFFF          FF FF FF 7F
通过 GitHub 编辑 链接将在新窗口或新标签页中打开
PHP Exercism

准备好开始 可变长度数量 了吗?

注册 Exercism,借助 11 个概念122 个练习 和真人导师指导,学习并掌握 PHP,全部免费。