Я построил два парсера, которые работают для всего, кроме некоторых двоичных блоков.Один переходит из проприетарного формата в стандартный json, а второй - из json обратно в проприетарный формат.
Когда я писал тот, который отправлялся в json, я был просто счастлив получить все это для анализа действительного json, но волновался, что, возможно, я не смог вернуть двоичные разделы, и проблема, кажется, имеетсбудется.
Base64, я считаю необходимым или одним из возможных решений, так как в противном случае двоичный файл слишком полон символов, которые не нравятся json, я думаю, что попытка избежать их и т. д. была бы более сложной, чем это решение base64.
Итак, вот двоичный блок из исходного файла:
cleanbinary = "0\x82\x02\xd80\x82\x01\xc0\xa0"
Он приведен в base64 следующим образом:
import base64
out = base64.encodebytes(cleanbinary.encode('utf-8'))
print(out)
>> b'MMKCAsOYMMKCAcOAwqA=\n'
То, что вы можете повернуть обратно вДвоичный файл:
z = base64.decodebytes(out).decode('utf-8')
print(z == cleanbinary)
>> True
Однако ему нужен шаг посередине, но я просто не могу понять, чтобы поместить его в json в середине цикла.Пробовал следующее:
wrapped = '"' + str(out) + '"'
Итак, теперь у вас есть двойные кавычки, которые нужны json, и это str
вместо bytes
:
print(wrapped)
>> '"b\'MMKCAsOYMMKCAcOAwqA=\\n\'"'
Теперь допустим, что вывытащил это строковое значение из файла json с помощью анализатора json в Python.Как превратить его обратно в байтовое значение:
b'MMKCAsOYMMKCAcOAwqA=\n'
.., чтобы его можно было проанализировать обратно в двоичный файл?