Varint (minecraft) в python

Если кратко то нужно было сделать сочинитель 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

все что нужно было добавить это условие на проверку длины…

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *