it is a code for variable-length integer (popularly known as google's varlen) compression algorithm which belongs to variable length coding category.
#include <bits/stdc++.h>
template<typename int_t = uint64_t>
size_t encodeVarint(int_t value, uint8_t* output) {
size_t outputSize = 0;
while (value > 127) {
output[outputSize] = ((uint8_t)(value & 127)) | 128;
value >>= 7;
outputSize++;
}
output[outputSize++] = ((uint8_t)value) & 127;
return outputSize;
}
template<typename int_t = uint64_t>
int_t decodeVarint(uint8_t* input, size_t inputSize) {
int_t ret = 0;
for (size_t i = 0; i < inputSize; i++) {
ret |= (input[i] & 127) << (7 * i);
if(!(input[i] & 128)) {
break;
}
}
return ret;
}
using namespace std;
int main(int argc, char** argv) {
uint8_t* buf;
size_t outsize = encodeVarint<uint64_t>(0xCAFE, buf);
cout << decodeVarint(buf, outsize) << endl;
}