如何弄清varint编码数字的长度?

时间:2019-05-03 22:32:40

标签: varint

如果这样的话,具体的版本是Minecraft VarInts/VarLongs

  

可变长度格式,以便较小的数字使用较少的字节。这些与协议缓冲区变量非常相似:使用7个最低有效位对值进行编码,而最高有效位指示该数字的下一部分是否在其后还有另一个字节。最低有效的组是最先写的,然后是每个较高的组。因此,VarInts实际上是小尾数(但是,组是7位而不是8位)。

如何获取数字并找出VarInt表示形式需要占用多少字节?

例如,对于值0b10000000_00000000,结果应为3,因为varint表示为:

Byte 1              Byte 2              Byte 3 <-- the result
========            ========            ========
1234567*            89ABCDE*            FGHIJKL*
--------            --------            --------
00000001            00000001            01000000
       ^                   ^                   ^
       continue bit        continue bit        continue bit off, no more.

我可以将其转换为varint并进行检查,但是我敢肯定有一种更快的方法。

0 个答案:

没有答案