Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma once
- #include <stdint.h>
- #include <array.h>
- // read variable length quantity
- uint32_t _vlq_read(const uint8_t *&out) {
- uint32_t val = 0;
- for (;;) {
- const uint8_t c = *(out++);
- val = (val << 7) | (c & 0x7f);
- if ((c & 0x80) == 0) {
- break;
- }
- }
- return val;
- }
- // write variable length quantity
- void _vlq_write(uint8_t *&out, uint32_t val) {
- std::array<uint8_t, 16> data;
- int32_t i = 0;
- for (; val; ++i) {
- data[i] = val & 0x7f;
- val >>= 7;
- }
- do {
- --i;
- *(out++) = data[i] | (i ? 0x80 : 0x00);
- } while (i > 0);
- }
Add Comment
Please, Sign In to add comment