Как укоротить строку, чтобы потом её можно было вернуть

Написал скрипт на Питоне, который читает данные из банарного файла и записывает информацию в json (и обратно). Некоторые значения получаются очень длинные, поэтому и вес json файла приличный. Некоторые значения нужно значительно укоротить, с возможностью возврата в исходное состояние.

Код:

def readInt(file, size): #для записи в json
    return int.from_bytes(file.read(size), "little")

def writeInt(file, count, value): #для записи из json
    file.write(value.to_bytes(count, "little"))

club['Unk8'] = readInt(datFile, 74) #запись в json

writeInt(datFile, 74, club['Unk8']) #запись из json в бинарный 

В Json выглядит так:

Unk8": "0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00"

Как максимально укоротить строку Unk8, чтобы можно было обратно вернуть её без потерь?


Ответы (1 шт):

Автор решения: nickwaze

Если во всех строках много повторяющихся символов, то можно хранить порядок уникальных символов и количество их повторений. Можно хранить как и строку, которую потом обратно парсить или как массив сразу.

"Unk8": "0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FF0000FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00"
"Unk8":"04.F2.04. и т.д."
"Unk8":[
   {'symbol':'0', 'count':4}, и т.д.
→ Ссылка