您如何在base64.b64encode上使用可变参数,但是当我不使用提示窗口时呢?

问题描述 投票:0回答:1

此问题与此处的this类似,但如果我这样将其放入这段代码中:

import base64
theone = input('Enter your plaintext: ')
encoded = str(base64.b64encode(theone))
encoded = base64.b64encode(encoded.encode('ascii'))
encoded = encoded[2:]
o = len(encoded)
o = o-1
encoded = encoded[:o]
print(encoded)

它引起了这个问题:

line 58, in b64encode
encoded = binascii.b2a_base64(s, newline=False)
TypeError: a bytes-like object is required, not 'str'

然后如果我删除此行代码:

encoded = base64.b64encode(encoded.encode('ascii'))

然后会引发相同的错误。我不确定从这里开始该怎么做,我将不胜感激。

python base64 encode
1个回答
0
投票

您似乎在bytesstrings上遇到问题。输入返回的值是一个字符串(str),但是base64.b64encode需要字节(bytes)。

如果打印bytes实例,则会看到类似的内容>>

b'spam'

要删除开头的'b',您需要解码回str

为了使代码正常工作,将字节传递到base64.b64encode,并解码结果以打印出来。

>>> theone = input('Enter your plaintext: ')
Enter your plaintext: Hello World!
>>> encoded = base64.b64encode(theone.encode())
>>> encoded
b'SGVsbG8gV29ybGQh'
>>> print(encoded.decode())
SGVsbG8gV29ybGQh
© www.soinside.com 2019 - 2024. All rights reserved.