Python 2.7 - 将base 64转换为二进制字符串

时间:2018-01-08 14:32:17

标签: python python-2.7 base64

我正在使用Python 2.7(这意味着没有base64.decodebytes()) 我需要将我的base64字符串(例如aW0ganVzdCBhIGJhc2UgNjQgZmlsZQ==)转换为二进制(即1和0的字符串)。

我想尝试将基本64字符串写入模式wb的文件中,然后使用rb将其读回来,但即使使用wb写入 - 我仍然看到打开文件时原始基本64字符串..

我错过了什么?

由于

2 个答案:

答案 0 :(得分:3)

您可以使用列表解析中的ordformat函数进行转换。

import base64
data = 'aW0ganVzdCBhIGJhc2UgNjQgZmlsZQ=='
print [format(ord(c), '08b') for c in base64.b64decode(data)]

<强>输出

['01101001', '01101101', '00100000', '01101010', '01110101', '01110011', '01110100', '00100000', '01100001', '00100000', '01100010', '01100001', '01110011', '01100101', '00100000', '00110110', '00110100', '00100000', '01100110', '01101001', '01101100', '01100101']

如果您希望将其作为单个字符串,只需.join

''.join([format(ord(c), '08b') for c in base64.b64decode(data)])

答案 1 :(得分:1)

没错。即使将它们保存到二进制文件中,也可以看到可读字符。 因为它们是ASCII字符。

实际上,你不打算用二进制格式保存文件,因为你不能通过'wb'保存来获取二进制字符串。

您应该做的是获取每个字符的ASCII值,并将其转换为二进制数。