| from ._buffer import Buffer, BufferReadError, BufferWriteError # noqa |
| |
| UINT_VAR_MAX = 0x3FFFFFFFFFFFFFFF |
| |
| |
| def encode_uint_var(value: int) -> bytes: |
| """ |
| Encode a variable-length unsigned integer. |
| """ |
| buf = Buffer(capacity=8) |
| buf.push_uint_var(value) |
| return buf.data |
| |
| |
| def size_uint_var(value: int) -> int: |
| """ |
| Return the number of bytes required to encode the given value |
| as a QUIC variable-length unsigned integer. |
| """ |
| if value <= 0x3F: |
| return 1 |
| elif value <= 0x3FFF: |
| return 2 |
| elif value <= 0x3FFFFFFF: |
| return 4 |
| elif value <= 0x3FFFFFFFFFFFFFFF: |
| return 8 |
| else: |
| raise ValueError("Integer is too big for a variable-length integer") |