Я написал приведенный ниже код. Код проверяет первый бит каждого байта. Если первый бит каждого байта равен 0, он объединяет это значение с предыдущим байтом и сохраняет его в другой переменной var1. Здесь pos указывает на байты целого числа. Целое число в моей реализации - uint64_t и может занимать до 8 байтов.
uint64_t func(char* data)
{
uint64_t var1 = 0; int i=0;
while ((data[i] >> 7) == 0)
{
variable = (variable << 7) | (data[i]);
i++;
}
return variable;
}
Так как я многократно вызываю func() триллион раз для триллионов целых чисел. Поэтому он работает медленно, есть ли способ, с помощью которого я могу оптимизировать этот код?
EDIT: Благодаря Джо Z... действительно является формой распаковки uleb128.