你如何在 base64.b64encode 上使用可变参数,但当我不使用提示 window 时?
How do you use a variable argument on base64.b64encode but when i am not using the prompt window?
这个问题类似于 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'))
然后它引发了同样的错误。我不确定从这里可以做什么,如果有任何帮助,我将不胜感激。
您似乎在使用 bytes 和 strings 时遇到了问题。输入返回的值是字符串 (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
这个问题类似于 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'))
然后它引发了同样的错误。我不确定从这里可以做什么,如果有任何帮助,我将不胜感激。
您似乎在使用 bytes 和 strings 时遇到了问题。输入返回的值是字符串 (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