Как безопасно кодировать произвольный байтовый массив в текстовый формат - PullRequest
0 голосов
/ 03 июля 2018

Монго поток изменений перенастраивается в двоичном формате

Чтобы иметь возможность писать сценарий изменения монго, я хочу закодировать массив байтов в формат, который будет безопасным для параметра командной строки.

pprint.pprint(change['_id']['_data'])
(b'\x82[8\x92G\x00\x00\x00\x01Fd_id\x00d[8\x91\xf2.\xc2\xd4\x00\x0b\xabO\x98'
 b'\x00Z\x10\x04\x16,\x92\xf8\xbf\x92G\x87\x8d1\xff(\x1a\x1b{\xc8\x04')

Какой будет безопасный формат для преобразования текста двоичного массива, который будет принят в качестве параметра?

Пример для преобразования из двоичного файла в заданный формат и из заданного формата будет полезен ввод str () обратно в двоичный файл.

Попытка 1

base64.b85encode(change['_id']['_data']).decode('ascii')
'f?GI}M*si-0Y+qBX=DIoTR4&OF2d9R3#(6<09p_P7A%tZzmi9XjWPcy8XJ4a1O'

Переход с двоичного на base85 работает, но я не могу понять, как вернуться назад.


РЕДАКТИРОВАТЬ: Повторное открытие Rational

Я думаю, что этот вопрос не должен быть помечен как дубликат, так как этот вопрос нацелен на преобразование случайных байтовых массивов, которые не представляют читаемый человеком символ / кодировку. Как следует из предыдущего вопроса, основное внимание уделяется преобразованию строки в двоичный массив и обратно, что является особым случаем двоичного представления в строковое представление, в то время как мой вариант использования требует общего решения.

1 Ответ

0 голосов
/ 03 июля 2018

О, круто, я думаю, я понял это

base64.b85decode примет как строку, так и двоичные данные.

Пример:

b = b'\x82[8\x929\x00\x00\x00\x04Fd'
b == base64.b85decode(base64.b85encode(b).decode('ascii'))
True
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...