Итак, я пытаюсь сжать свой инвертированный индекс, и я использовал алгоритм кодирования 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.Почему это может происходить?
Заранее спасибо.