""" bilibili_api.utils.varint 变长数字字节相关。 """ from typing import Tuple def read_varint(stream: bytes) -> Tuple[int, int]: """ 读取 varint。 Args: stream (bytes): 字节流。 Returns: Tuple[int, int],真实值和占用长度。 """ value = 0 position = 0 shift = 0 while True: if position >= len(stream): break byte = stream[position] value += (byte & 0b01111111) << shift if byte & 0b10000000 == 0: break position += 1 shift += 7 return value, position + 1