这个压缩算法有名称吗?

Mic*_*eyn 6 compression

假设您有一个四字节整数,并且希望将其压缩为更少的字节.您可以压缩它,因为较小的值比较大的值更可能(即,值的概率随其大小而减小).您应用以下方案,以产生1,2,3或4字节结果:

注意,在下面的描述中(位是从1开始的,从最高有效位到最低有效位),即第一位指的是最高有效位,第二位指的是下一个最高位,等等......)

  1. 如果n <128,则将其编码为单个字节,并将第一个位设置为零
  2. 如果n> = 128且n <16,384,则使用两个字节的整数.将第一位设置为1,将第二位设置为零.然后使用剩余的14位对数字n进行编码.
  3. 如果n> 16,384且n <2,097,152,则使用三字节整数.将第一位设置为1,将第二位设置为1,将第三位设置为零.您使用剩余的21位来编码n.
  4. 如果n> 2,097,152且n <268,435,456,则使用四字节整数.将前三位设置为1,将第四位设置为零.您使用剩余的28位来编码n.
  5. 如果n> = 268,435,456且n <4,294,967,296,则使用五字节整数.将前四位设置为1并使用以下32位将n的精确值设置为四字节整数.其余位未使用.

这个算法有名字吗?

Fre*_*Foo 4

这与可变长度数量编码或 base-128 非常接近。后一个名称源于这样一个事实:编码中的每个 7 位单元都可以被视为一个 base-128 数字。