Если кратко то нужно было сделать сочинитель varint из чисел…
то что было уже готово не умело в отрицательные значения… Что было очень странно. ведь прочитав условия еще раз все встает на свои места.
def _encode_var_int(input_number: int):
"""Pack `number` into varint bytes"""
buf = b''
number = input_number if input_number < 0 else input_number + 2 ** 32
while len(buf) != 5:
towrite = number & 0x7f
if number > 0:
number >>= 7
if number:
buf += bytes((towrite | 0x80,))
else:
buf += bytes((towrite,))
break
return buf
все что нужно было добавить это условие на проверку длины…