vbyte декодер в поиске информации - PullRequest
0 голосов
/ 05 октября 2018

Итак, я пытаюсь сжать свой инвертированный индекс, и я использовал алгоритм кодирования v-байтов для сжатия списка документов и позиций, а затем сделал

pickle.dump(v)

в двоичный файл.Затем я попытался загрузить файл с помощью

pickle.loads(f)

, затем я пытаюсь декодировать его с помощью алгоритма декодирования

//Encoding algorithm
def vbyte():
for k, v in term_position_dic.items():
    b = []
    for i in v:
        while i >= 128:
            b.append(i & 0x7f)
            i >>= 7
        b.append(i | 0x80)
    term_position_dic[k] = b

Затем я пытаюсь декодировать с помощью

loading the file
p = f.read(CompressedLookup['scene']['size'])

//decoding code
def vbytedecode(inp):
for i in range(len(inp)):
    pos = 0
    result = inp[i] & 0x7f
    print(result)
    while (inp[i] & 0x80) == 0:
        i += 1
        pos += 1
        b = inp[i] & 0x7f
    result |= (b << (7*pos))
return(result)

когда я запускаю это, я получаю индекс bytearray вне диапазона ERROR.Почему это может происходить?

Заранее спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...