#include #include static inline int leading_ones(uint8_t value) { for (int i=0; i<8; i++) { if (!(value & 0x80)) { return i; } value = value << 1; } assert(false); } static inline uint8_t last_k_bits(uint8_t value, uint8_t bits) { return (value & ((1<> 6); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | (c & 0b111111); } else if (c <= 0xFFFF) { buffer[i++] = 0b11100000 | (c >> 12); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | ((c >> 6) & 0b111111); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | (c & 0b111111); } else { buffer[i++] = 0b11110000 | (c >> 18); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | ((c >> 12) & 0b111111); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | ((c >> 6) & 0b111111); if (bufferSize <= i) { return i; } buffer[i++] = 0b10000000 | (c & 0b111111); } return i; }