如何将随机字节数组安全编码为文本格式

时间:2018-07-03 11:12:11

标签: python python-3.x mongodb

Mongo Change Stream以二进制格式重新调整

为了能够编写mongo change流脚本,我想将字节数组编码为一种命令行参数安全的格式。

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 :(得分:0)

哦,很酷,我想我已经弄明白了

base64.b85decode将字符串和二进制作为输入。

示例:

b = b'\x82[8\x929\x00\x00\x00\x04Fd'
b == base64.b85decode(base64.b85encode(b).decode('ascii'))
True