13size_t pc_quic_varint_len(uint64_t value)
23 if (value <= 0x3FFFFFFF)
27 if (value <= QUIC_VARINT_MAX)
34size_t pc_quic_varint_encode(uint8_t *out,
size_t cap, uint64_t value)
36 size_t n = pc_quic_varint_len(value);
37 if (n == 0 || cap < n)
42 static const uint8_t prefix[9] = {0, 0x00, 0x40, 0, 0x80, 0, 0, 0, 0xC0};
43 for (
size_t i = 0; i < n; i++)
45 out[n - 1 - i] = (uint8_t)(value >> (8 * i));
51bool pc_quic_varint_decode(
const uint8_t *in,
size_t len, uint64_t *value,
size_t *consumed)
57 size_t n = (size_t)1 << (in[0] >> 6);
62 uint64_t v = (uint64_t)(in[0] & 0x3F);
63 for (
size_t i = 1; i < n; i++)