Как выяснить длину закодированного числа varint? - PullRequest
0 голосов
/ 04 мая 2019

Конкретными вариантами, если это имеет значение, являются 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 и проверить, но я уверен, что есть более быстрый путь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...