我正在使用Python 2.7(这意味着没有base64.decodebytes()
)
我需要将我的base64字符串(例如aW0ganVzdCBhIGJhc2UgNjQgZmlsZQ==
)转换为二进制(即1和0的字符串)。
我想尝试将基本64字符串写入模式wb
的文件中,然后使用rb
将其读回来,但即使使用wb
写入 - 我仍然看到打开文件时原始基本64字符串..
我错过了什么?
由于
答案 0 :(得分:3)
您可以使用列表解析中的ord
和format
函数进行转换。
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值,并将其转换为二进制数。